home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / opalvisn / devdocs.lha / opal.doc < prev    next >
Text File  |  1993-05-05  |  75KB  |  2,761 lines

  1. TABLE OF CONTENTS
  2.  
  3. opal.library/ActiveScreen24
  4. opal.library/AmigaPriority
  5. opal.library/AppendCopper24
  6. opal.library/AutoSync24
  7. opal.library/BitPlanetoOV
  8. opal.library/ClearDisplayBottom24
  9. opal.library/ClearPFStencil24
  10. opal.library/ClearPRStencil24
  11. opal.library/ClearQuick24
  12. opal.library/ClearScreen24
  13. opal.library/CloseScreen24
  14. opal.library/Config24
  15. opal.library/CreateScreen24
  16. opal.library/DisablePRStencil24
  17. opal.library/DisableZDStencil24
  18. opal.library/DisplayFrame24
  19. opal.library/DisplayThumbnail24
  20. opal.library/DrawEllipse24
  21. opal.library/DrawLine24
  22. opal.library/DualDisplay24
  23. opal.library/DualPlayField2
  24. opal.library/EnablePRStencil24
  25. opal.library/EnableZDStencil24
  26. opal.library/FadeIn24
  27. opal.library/FadeOut24
  28. opal.library/FreeScreen24
  29. opal.library/FreezeFrame24
  30. opal.library/ILBMtoOV
  31. opal.library/LatchDisplay24
  32. opal.library/LoadImage24
  33. opal.library/LowMemUpdate24
  34. opal.library/LowMem2Update24
  35. opal.library/LowMemRGB24
  36. opal.library/OpenScreen24
  37. opal.library/OVPriority
  38. opal.library/OVtoBitPlane
  39. opal.library/OVtoILBM
  40. opal.library/OVtoRGB
  41. opal.library/PaletteMap24
  42. opal.library/ReadPFPixel24
  43. opal.library/ReadPixel24
  44. opal.library/ReadPRPixel24
  45. opal.library/RectFill24
  46. opal.library/Refresh24
  47. opal.library/RegWait24
  48. opal.library/RGBtoOV
  49. opal.library/SaveIFF24
  50. opal.library/SaveJPEG24
  51. opal.library/Scroll24
  52. opal.library/SetControlBit24
  53. opal.library/SetCoPro24
  54. opal.library/SetDisplayBottom24
  55. opal.library/SetHires24
  56. opal.library/SetLoadAddress24
  57. opal.library/SetLores24
  58. opal.library/SetPFStencil24
  59. opal.library/SetPRStencil24
  60. opal.library/SetRGB24
  61. opal.library/SetScreen24
  62. opal.library/SetSprite24
  63. opal.library/SingleDisplay24
  64. opal.library/SinglePlayField24
  65. opal.library/StartTransition24
  66. opal.library/StopTransition24
  67. opal.library/StopUpdate24
  68. opal.library/UpdateAll24
  69. opal.library/UpdateCoPro24
  70. opal.library/UpdateDelay24
  71. opal.library/UpdatePalette24
  72. opal.library/UpdatePFStencil24
  73. opal.library/UpdateRegs24()
  74. opal.library/WriteFrame24
  75. opal.library/WritePFPixel24
  76. opal.library/WritePixel24
  77. opal.library/WritePRPixel24
  78. opal.library/WriteThumbnail24
  79.  
  80. opalreq.library/OpalRequester
  81.  
  82.  
  83. opal.library/ActiveScreen24
  84.  
  85.     NAME
  86.     ActiveScreen24 -- Provides a pointer to the currently displayed OpalVision screen.
  87.  
  88.     SYNOPSIS
  89.     OScrn = ActiveScreen24 (void);
  90.     D0
  91.  
  92.     struct OpalScreen *OScrn;
  93.  
  94.     FUNCTION
  95.     This function provides a pointer to the currently displayed OpalVision screen. If there is no OpalVision 
  96.     display active then a null value is returned.
  97.  
  98.     This call is useful for writing background colour cycling or coprocessor effects programs to affect the 
  99.     currently open screen. 
  100.  
  101.     INPUTS
  102.     None
  103.  
  104.     RESULT
  105.     OScrn    -A pointer to the currently open OpalVision screen, or NULL.
  106.  
  107.     CONSIDERATIONS
  108.  
  109.     Caution must be exercised when dealing with screens owned by another task. Bitplane access should be 
  110.     avoided unless running cooperative tasks with mutually exclusive bitplane access.
  111.  
  112.     SEE ALSO
  113.  
  114.     OpenScreen24()
  115.  
  116. opal.library/AmigaPriority
  117.  
  118.     NAME
  119.     AmigaPriority -- Gives Amiga graphics priority over OpalVision display.
  120.  
  121.     SYNOPSIS
  122.     void AmigaPriority (void);
  123.  
  124.     FUNCTION
  125.     This function clears the OVPRI bit of all CoPro instructions which gives Amiga graphics priority over 
  126.     OpalVision graphics. If a dual display has not been set, only Amiga graphics will be visible.
  127.  
  128.     INPUTS
  129.     None
  130.  
  131.     RESULT
  132.     None
  133.  
  134.     CONSIDERATIONS
  135.     If an Opal display bottom has been set, the coprocessor instructions will not be 
  136.     modified for that region of the display.
  137.  
  138.     SEE ALSO
  139.     OVPriority()
  140.     DualDisplay24()
  141. opal.library/AppendCopper24
  142.  
  143.     NAME
  144.     AppendCopper24 -- Attaches user copper lists to existing display copper lists.
  145.  
  146.     SYNOPSIS
  147.     void AppendCopper24 (CopLists);
  148.                 A0
  149.  
  150.     UWORD **CopLists[12];
  151.  
  152.     FUNCTION
  153.     Up to 12 different Amiga copper lists are used to update the OpalVision memory. This function allows 
  154.     user copper lists to be attached to the end of each of the lists to enable split screen 24bit displays and 
  155.     other copper effects. 
  156.  
  157.     Each copper list must be terminated with $FFFFFFFE followed by 30 free bytes for linkage code.
  158.  
  159.     After attaching copper lists, the LastWait field in the OpalScreen structure must be initialised with the 
  160.     last vertical position wait in the attached copper lists.
  161.  
  162.     The VStart field in the OpalScreen structure contains the scan line of the first displayed line for the 
  163.     screen. To convert a display 'y' coordinate to a vertical copper wait instruction, use VWait = y + VStart.
  164.  
  165.     INPUTS
  166.     CopLists    - Pointer to an array of 12 copper list pointers to be joined to the current display copper lists.
  167.  
  168.     RESULT
  169.     None
  170.  
  171.     CONSIDERATIONS
  172.     All copper lists must reside in chip ram.
  173.  
  174.     SEE ALSO
  175.  
  176. opal.library/AutoSync24
  177.  
  178.     NAME
  179.     AutoSync24 -- Enables auto horizontal synchronisation.
  180.  
  181.     SYNOPSIS
  182.     void  AutoSync24 (Sync);
  183.               D0
  184.  
  185.     BOOL Sync;
  186.  
  187.     FUNCTION
  188.     Enables the OpalVision's auto synchronisation mode (see "Horizontal Synchronisation").  This mode will 
  189.     be automatically disabled when frame buffer updates are occurring, and re-enabled when they cease.
  190.  
  191.     INPUTS
  192.     Sync =    0 = Disable auto syncing,  1 = Enable auto syncing.
  193.  
  194.     RESULT
  195.     None
  196.  
  197.     CONSIDERATIONS
  198.  
  199.     SEE ALSO
  200.  
  201.  
  202. opal.library/BitPlanetoOV
  203.  
  204.     NAME
  205.     BitPlanetoOV -- Converts standard bitplane data to OpalVision format.
  206.  
  207.     SYNOPSIS
  208.     void BitPlanetoOV (OScrn, SrcPlanes, SrcWidth, Lines, TopLine, SrcDepth)
  209.                A0      A1         D0           D1     D2       D3
  210.  
  211.     struct OpalScreen *OScrn;
  212.     UBYTE **SrcPlanes[];
  213.     long SrcWidth;
  214.     long Lines;
  215.     long TopLine;
  216.     long SrcDepth;
  217.  
  218.     FUNCTION
  219.  
  220.     Converts bit plane data from the supplied bitplanes into OpalVision memory format and stores this in the 
  221.     OpalScreen supplied.
  222.  
  223.     The source data will be clipped if it is wider than the destination screen, or will be padded out if it is 
  224.     narrower.
  225.  
  226.     INPUTS
  227.     OScrn     = Destination OpalScreen.
  228.     SrcPlanes     = A pointer to an array of pointers to source Bitplanes.
  229.     SrcWidth    = Byte width of source planes (must be even).
  230.     Lines     = Number of lines to convert.
  231.     TopLine     = Starting line to place destination data.
  232.     SrcDepth    = The number of bitplanes in SrcPlanes.
  233.  
  234.     RESULT
  235.     None
  236.  
  237.     CONSIDERATIONS
  238.     All bitplanes must start on a word boundary, and SrcWidth must be even.
  239.  
  240.     SEE ALSO
  241.     OVtoBitPlane()
  242.  
  243. opal.library/ClearDisplayBottom24
  244.  
  245.     NAME
  246.     ClearDisplayBottom24 -- Clears the OpalVision display bottom setting.
  247.  
  248.     SYNOPSIS
  249.     void ClearDisplayBottom24 (void)
  250.  
  251.     FUNCTION
  252.     Remove the OpalVision display bottom previously set with a call to SetDisplayBottom24().
  253.  
  254.     INPUTS
  255.     None
  256.  
  257.     RESULT
  258.     None
  259.  
  260.     CONSIDERATIONS
  261.  
  262.  
  263.     SEE ALSO
  264.     SetDisplayBottom24()
  265.  
  266. opal.library/ClearPFStencil24
  267.  
  268.     NAME
  269.     ClearPFStencil24 -- Clears the PlayField Stencil of the specified screen.
  270.  
  271.     SYNOPSIS
  272.     void ClearPFStencil24 (OScrn);
  273.                 A0
  274.  
  275.     struct OpalScreen *OScrn;
  276.  
  277.     FUNCTION
  278.     Clears the playfield stencil (least significant bit of green bank 0) of all of the pixels in the specified 
  279.     screen.
  280.  
  281.     INPUTS
  282.     OScrn    = OpalScreen structure.
  283.  
  284.     RESULT
  285.     None
  286.  
  287.     CONSIDERATIONS
  288.     This will only have a visible effect if Dual Playfield mode has been set up using DualPlayField24().
  289.  
  290.     SEE ALSO
  291.     SetPFStencil24()
  292.     DualPlayField24()
  293.     SinglePlayField24()
  294.  
  295. opal.library/ClearPRStencil24
  296.  
  297.     NAME
  298.     ClearPRStencil24 -- Clears the Priority Stencil of the specified Screen.
  299.  
  300.     SYNOPSIS
  301.     void ClearPRStencil24 (OScrn);
  302.                 A0
  303.  
  304.     struct OpalScreen *OScrn;
  305.  
  306.     FUNCTION
  307.     Clears the priority stencil (least significant bit of blue bank 0) of the all of the pixels in the specified 
  308.     screen.
  309.  
  310.     INPUTS
  311.     OScrn    = OpalScreen structure.
  312.  
  313.     RESULT
  314.     None
  315.  
  316.     CONSIDERATIONS
  317.     This will only have a visible effect if dual OpalVision/Amiga display mode has been set up using 
  318.     DualDisplay24().
  319.  
  320.     SEE ALSO
  321.     SetPRStencil24()
  322.     DualDisplay24()
  323.     SingleDisplay24()
  324.  
  325. opal.library/ClearQuick24
  326.  
  327.     NAME
  328.     ClearQuick24 -- Clears OpalVision frame buffer memory.
  329.  
  330.     SYNOPSIS
  331.     void ClearQuick24 (void)
  332.  
  333.     FUNCTION
  334.     This function clears the frame buffer memory as quickly as possible by enabling a write to all banks of 
  335.     memory. This function will also zero all bitplanes in memory (see ClearScreen24()). This operation will 
  336.     take 1 frame to clear any resolution non-interlaced display, and 2 frames for an interlaced display.This 
  337.     function  acts on the current display screen and cannot be used for virtual screens.
  338.  
  339.     This function is called by OpenScreen24.
  340.  
  341.     INPUTS
  342.     None
  343.  
  344.     RESULT
  345.     None
  346.  
  347.     CONSIDERATIONS
  348.  
  349.  
  350.     SEE ALSO
  351.     ClearScreen24()
  352.  
  353. opal.library/ClearScreen24
  354.  
  355.     NAME
  356.     ClearScreen24 -- Clears all bitplanes in a screen.
  357.  
  358.  
  359.     SYNOPSIS
  360.     void ClearScreen24 (OScrn)
  361.                 A0
  362.  
  363.     struct OpalScreen *OScrn;
  364.  
  365.     FUNCTION
  366.     Clear all bitplanes contained in the OpalScreen structure which may be a virtual screen or the display 
  367.     screen.
  368.  
  369.     This function clears the bitplane memory without updating the frame buffer (unless frame buffer updates 
  370.     are enabled).
  371.  
  372.     INPUTS
  373.     OScrn = Pointer to the Opal screen to be cleared.
  374.  
  375.     RESULT
  376.     None
  377.  
  378.     CONSIDERATIONS
  379.  
  380.  
  381.     SEE ALSO
  382.     ClearQuick24()
  383. opal.library/CloseScreen24
  384.  
  385.     NAME
  386.     CloseScreen24 -- Stop current display and free resources.
  387.  
  388.     SYNOPSIS
  389.     void CloseScreen24 (void);
  390.  
  391.     FUNCTION
  392.     This function closes the current displayed screen if it was opened by the current task.
  393.  
  394.     A screen opened by another task can be closed if it was opened with the CLOSEABLE24 flag. Backdrop 
  395.     and other low priority programs should use the following procedure to open screen.
  396.  
  397.         OScrn = OpenScreen24 (CLOSEABLE24);
  398.             .
  399.             .
  400.             .
  401.             .
  402.         if (OScrn!=NULL)
  403.             { WaitPort (OScrn->UserPort);
  404.                CloseScreen24();
  405.                Mesg = GetMsg (OScrn->UserPort);
  406.                ReplyMsg (Mesg);
  407.             }
  408.  
  409.     The task will be sent a message when another task is trying to open a screen or close down the one 
  410.     already open. Note that the screen MUST be closed before replying to the message.
  411.  
  412.     An alternative method to create a backdrop is to update the frame buffer, latch the 24 bit display using 
  413.     LatchDisplay24() and then call CloseScreen24(). The contents of the frame buffer will remain visible 
  414.     until another task calls OpenScreen24().
  415.  
  416.     INPUTS
  417.     None
  418.  
  419.     RESULT
  420.     None
  421.  
  422.     CONSIDERATIONS
  423.  
  424.     SEE ALSO
  425.  
  426.     OpenScreen24()
  427.  
  428. opal.library/Config24
  429.  
  430.     NAME
  431.     Config24 --     Returns the OpalVision hardware configuration.
  432.  
  433.     SYNOPSIS
  434.     Config = Config24 (void);
  435.     D0
  436.  
  437.     long Config;
  438.  
  439.     FUNCTION
  440.     Returns flags indicating the hardware configuration of the 24bit display card, future flags  will give 
  441.     details on the existence of OpalVision modules such as the Video Roaster Chip and the frame grabber 
  442.     genlock module.
  443.  
  444.     Current return flags are:
  445.  
  446.         OVCF_OPALVISION    - Display board is an OpalVision card.
  447.         OVCF_COLORBURST    - Display board is a ColorBurst.
  448.  
  449.     INPUTS
  450.  
  451.  
  452.     RESULT
  453.  
  454.  
  455.     CONSIDERATIONS
  456.  
  457.  
  458.     SEE ALSO
  459.  
  460.  
  461. opal.library/CreateScreen24
  462.  
  463.     NAME
  464.     CreateScreen24 -- Creates an arbitrarily sized virtual OpalScreen.
  465.  
  466.     SYNOPSIS
  467.     OScrn = CreateScreen24 (ScreenModes,Width,Height)
  468.                 D0        D1    D2
  469.  
  470.     struct OpalScreen *OScrn;
  471.     long Width;
  472.     long Height;
  473.     long ScreenModes;
  474.  
  475.     FUNCTION
  476.     This function can create an arbitrarily sized OpalScreen in Fast Ram. The bitplanes for the screen are 
  477.     allocated and an OpalScreen structure initialised, this is the virtual screen equivalent of OpenScreen24().
  478.  
  479.     Once this screen has been opened, all drawing, file and Memory conversion functions can be applied to 
  480.     this screen, however it cannot be directly displayed. This allows large super bitmap screens to be 
  481.     allocated in fast ram for manipulation, or to be partially copied to a primary OpalScreen in chip ram for 
  482.     display (to allow for scrolling).
  483.  
  484.     NOTE: Virtual screens are now  displayable using the LowMemUpdate() function, virtual screens are 
  485.     therefore recommended when doing one off frame buffer updates (such as the Show24 command) as it 
  486.     significantly reduces the chip ram requirements 
  487.  
  488.     INPUTS
  489.     Width          = Width in pixels of the screen to be opened.
  490.     Height          = Height in pixels of the screen to be opened.
  491.     ScreenModes = ScreenModes are identical to those of OpenScreen24().
  492.  
  493.     RESULT
  494.     OScrn    = Is a pointer to the new OpalScreen structure or NULL if there is insufficient memory     
  495.         to open the screen size specified.
  496.  
  497.     CONSIDERATIONS
  498.     This function allocates memory with no MEMF_ bits set, the program FastMemFirst should be executed 
  499.     to force all planes to be loaded into fast ram, under AmigaDOS 1.3 or previous.
  500.  
  501.     SEE ALSO
  502.     FreeScreen24()
  503.     OpenScreeen24()
  504.  
  505. opal.library/DisablePRStencil24
  506.  
  507.     NAME
  508.     DisablePRStencil24 -- Disables the use of the priority stencil in dual display mode. 
  509.  
  510.     SYNOPSIS
  511.     void DisablePRStencil24 (void);
  512.  
  513.     FUNCTION
  514.     This function clears the PRISTENCIL bit of all CoPro instructions.
  515.  
  516.     INPUTS
  517.     None
  518.  
  519.     RESULT
  520.     None
  521.  
  522.     CONSIDERATIONS
  523.     If an Amiga display bottom has been set using SetDisplayBottom24(), the CoPro instructions will not be 
  524.     modified for that part of the display.
  525.  
  526.     The priority stencil will only have an effect when a Dual Display is enabled by calling DualDisplay24().
  527.  
  528.     SEE ALSO
  529.     EnablePRStencil()
  530.     DualDisplay24()
  531.     SingleDisplay24()
  532.  
  533. opal.library/DisableZDStencil24
  534.  
  535.     NAME
  536.     DisableZDStencil24 -- Disable the Zero-Detect method of playfield control.
  537.                  (NOTE: New for V4.0).
  538.  
  539.     SYNOPSIS
  540.     void DisableZDStencil24 (void)
  541.  
  542.     FUNCTION
  543.     This function disables the zero-detect dual playfield method
  544.     enabled using the EnableZDStencil24() function. Once this has
  545.     been called, the OpalVision display will revert back to a
  546.     single playfield display.
  547.  
  548.     INPUTS
  549.     None
  550.  
  551.     RESULT
  552.     None
  553.  
  554.     CONSIDERATIONS
  555.  
  556.     SEE ALSO
  557.     StartTransition24()
  558.     StopTransition24()
  559.     EnableZDStencil()
  560.  
  561. opal.library/DisplayFrame24
  562.  
  563.     NAME
  564.     DisplayFrame24 -- Sets the currently displayed frame within the frame buffer memory.
  565.  
  566.     SYNOPSIS
  567.     void DisplayFrame24 (Frame);
  568.                  D0
  569.  
  570.     long Frame;
  571.  
  572.     FUNCTION
  573.     Depending on the resolution of the displayed OpalVision screen, a number of screens can be stored in the 
  574.     frame buffer memory. The number of frames available for the screens resolution are given in the 
  575.     MaxFrames field in the OpalScreen structure.
  576.  
  577.     DisplayFrame24() allows each individual frame to be displayed separately where Frame is in the range 
  578.     0...MaxFrames. Using a combination of WriteFrame24 and DisplayFrame24, it is possible to store 
  579.     several images in frame buffer memory and to perform simple page flip animation.  
  580.  
  581.     INPUTS
  582.     Frame    = Frame number to display (0...MaxFrames).
  583.  
  584.     RESULT
  585.     None
  586.  
  587.     CONSIDERATIONS
  588.     The display frame and the write frame, must reside in the same field area in the frame buffer memory. 
  589.     (See "Memory Segment Diagram"). Due to this DisplayFrame24() has the side effect of changing the 
  590.     write frame if the new display frame is in a different field. 
  591.  
  592.     SEE ALSO
  593.     WriteFrame24()
  594.  
  595. opal.library/DisplayThumbnail24
  596.  
  597.     NAME
  598.     DisplayThumbnail24 -- Displays a file's thumbnail.
  599.  
  600.     SYNOPSIS
  601.     ReturnCode = DisplayThumbnail24 (OScrn, FileName, x, y);
  602.     D0                 A0     A1      D0 D1
  603.  
  604.     long ReturnCode;
  605.     struct OpalScreen *OScrn;
  606.     char *FileName;
  607.     long x;
  608.     long y;
  609.  
  610.     FUNCTION
  611.     This function displays the imbedded thumbnail in the file described by FileName if it exists.
  612.  
  613.     The x coordinate is rounded down to the nearest multiple of four in low resolution mode and to the 
  614.     nearest multiple of 8 in high resolution mode. The y coordinate is rounded down to the nearest even line 
  615.     in interlaced mode.
  616.  
  617.     INPUTS
  618.  
  619.     OScrn    = Pointer to an OpalScreen structure.
  620.     FileName= The file name of the picture file with the thumbnail.
  621.     x    = The x coordinate of the  screen position to display the thumbnail.
  622.     y    = The y coordinate of the screen position to display the thumbnail. 
  623.  
  624.     RESULT
  625.     ReturnCode    = OL_ERR Codes described in Opallib.h.                    
  626.     OL_ERR_NOTHUMBNAIL is returned if no thumbnail exists in the file.
  627.  
  628.     CONSIDERATIONS
  629.     Thumbnails must always be displayed in low resolution non interlaced mode. For an example of 
  630.     displaying thumbnails in a high resolution and interlaced screen, see the example program 
  631.     "DisplayDir.c"
  632.  
  633.     SEE ALSO
  634.     WriteThumbnail24()
  635.     SaveIFF24()
  636.  
  637. opal.library/DrawEllipse24
  638.  
  639.     NAME
  640.     DrawEllipse24 -- Draw an ellipse of given dimensions.
  641.  
  642.     SYNOPSIS
  643.     void DrawEllipse24 (OScrn,  cx,  cy,  a,  b)
  644.                 A0        D0   D1   D2  D3
  645.  
  646.     struct OpalScreen *OScrn;
  647.     long cx;
  648.     long cy;
  649.     long a;
  650.     long b;
  651.  
  652.     FUNCTION
  653.     Draws an ellipse in the supplied screen.
  654.  
  655.     NOTE: set a=b for circles.
  656.  
  657.     INPUTS
  658.  
  659.     OScrn     = Destination OpalScreen.
  660.     cx     = Centre x-Coordinate of ellipse.
  661.     cy     = Centre y-Coordinate of ellipse.
  662.     a     = horizontal radius of ellipse (must be >0).
  663.     b     = vertical radius of ellipse (must be >0).
  664.  
  665.     RESULT
  666.  
  667.     CONSIDERATIONS
  668.     The ellipse will only be rendered in the region specified by the clip region in the screen structure.
  669.  
  670.     SEE ALSO
  671.  
  672. opal.library/DrawLine24
  673.  
  674.     NAME
  675.     DrawLine24 -- Draws a line into an OpalScreen.
  676.  
  677.     SYNOPSIS
  678.     void DrawLine24 (OScrn, x1, y1, x2, y2)
  679.              A0     D0  D1  D2  D3
  680.  
  681.     struct OpalScreen *OScrn;
  682.     long x1;
  683.     long y1;
  684.     long x2;
  685.     long y2;
  686.  
  687.     FUNCTION
  688.     Draws a line in the specified screen structure which may be a virtual or display screen.
  689.  
  690.     In 24bit mode the colour of the line is specified by the Pen_R, Pen_G and Pen_B fields in the OpalScreen 
  691.     structure. In 15bit mode, Pen_R and Pen_G specify the colour of the line, while in 8bit only Pen_R is 
  692.     used. 
  693.  
  694.     INPUTS
  695.     OScrn    = The OpalScreen structure in which to draw.
  696.     x1, y1    = The starting co-ordinates of the line.
  697.     x2, y2    = The ending co-ordinates of the line.
  698.  
  699.     RESULT
  700.  
  701.  
  702.     CONSIDERATIONS
  703.     The line will only be rendered in the region specified by the clip region in the screen structure.
  704.  
  705.     SEE ALSO
  706.  
  707. opal.library/DualDisplay24
  708.  
  709.     NAME
  710.     DualDisplay24 -- Sets up an Amiga/OpalVision dual display.
  711.  
  712.     SYNOPSIS
  713.     void DualDisplay24 (void);
  714.  
  715.     FUNCTION
  716.     This function clears the DUALDISPLAY bit of all CoPro instructions, enabling a Dual 
  717.     Amiga/OpalVision display. The priority of the Amiga/OpalVision graphics can be set with OVPriority() 
  718.     and AmigaPriority().
  719.  
  720.     INPUTS
  721.     None
  722.  
  723.     RESULT
  724.     None
  725.  
  726.     CONSIDERATIONS
  727.     If an Amiga display bottom has been set, using the SetDisplayBottom24() the CoPro instructions will not 
  728.     be modified for that region of the display.
  729.  
  730.     SEE ALSO
  731.     SingleDisplay24()
  732.     AmigaPriority()
  733.     OVPriority()
  734.  
  735. opal.library/DualPlayField2
  736.  
  737.     NAME
  738.     DualPlayField24 -- Sets up an OpalVision 24bit dual playfield.
  739.  
  740.     SYNOPSIS
  741.     void DualPlayField (void)
  742.  
  743.     FUNCTION
  744.     This function sets the DUALPLAYFIELD bit of all CoPro instructions, allowing a dual 24 bit overlay 
  745.     mode. To determine which bank is displayed for each pixel, the playfield stencil needs to be set 
  746.     accordingly.
  747.  
  748.     INPUTS
  749.     None
  750.  
  751.     RESULT
  752.     None
  753.  
  754.     CONSIDERATIONS
  755.     If an Amiga display bottom has been set using SetDisplayBottom24(), the coprocessor instructions will 
  756.     not be modified for that region of the display.
  757.  
  758.     SEE ALSO
  759.     SinglePlayField24()
  760.  
  761. opal.library/EnableZDStencil24
  762.  
  763.     NAME
  764.     EnableZDStencil24 -- Enable the Zero-Detect method of playfield control.
  765.                  (NOTE: New for V4.0).
  766.  
  767.     SYNOPSIS
  768.     void EnableZDStencil24 (void)
  769.  
  770.     FUNCTION
  771.     The v2.0 EPROM for the OpalVision mother board allows a new
  772.     method of performing playfield transitions. This method
  773.     is enabled by setting both DualPlayfield and and HiresDisplay
  774.     bits, which is performed by this function.
  775.  
  776.     Once the zero-detect stencil is enabled, the Zero-Detect output
  777.     from the Amiga is used as a key to switch between the two banks.
  778.     This means that wherever the Amiga display is 0 (background
  779.     colour) bank 0 will be displayed, and when the Amiga display
  780.     is non-0 bank 1 is displayed. The transition can then be
  781.     performed using standard graphics library functions and viewports
  782.     or intuition screens, the Amiga display only needs to be
  783.     1 bitplane deep.
  784.  
  785.     The zero-detect stencil can be hires, although the 24bit display
  786.     will always be lores, this can still give a much finer edge on
  787.     transitions.
  788.  
  789.     INPUTS
  790.     None
  791.  
  792.     RESULT
  793.     None
  794.  
  795.     CONSIDERATIONS
  796.     Under ECS or AGA the zero-detect logic can be modified using
  797.     registers within the Amiga custom chips, this gives even
  798.     more flexibility to the zero-detect logic.
  799.  
  800.     Performing transitions using the zero detect logic is much faster
  801.     then using the playfield stencil.
  802.  
  803.     SEE ALSO
  804.     StartTransition24()
  805.     StopTransition24()
  806.     DisableZDStencil()
  807.  
  808. opal.library/EnablePRStencil24
  809.  
  810.     NAME
  811.     EnablePRStencil24 -- Enables the use of the priority stencil in dual display mode. 
  812.  
  813.     SYNOPSIS
  814.     void EnablePRStencil24 (void);
  815.  
  816.     FUNCTION
  817.     This function set the PRISTENCIL bit of all CoPro instructions.
  818.  
  819.     INPUTS
  820.     None
  821.  
  822.     RESULT
  823.     None
  824.  
  825.     CONSIDERATIONS
  826.     If an Amiga display bottom has been set using SetDisplayBottom24(), the CoPro instructions will not be 
  827.     modified for that part of the display.
  828.  
  829.     The priority stencil will only have an effect when a Dual Display is enabled by calling DualDisplay24().
  830.  
  831.     SEE ALSO
  832.     DisablePRStencil()
  833.     DualDisplay24()
  834.     SingleDisplay24()
  835.  
  836. opal.library/FadeIn24
  837.  
  838.     NAME
  839.     FadeIn24 -- Fades display in from black.
  840.  
  841.     SYNOPSIS
  842.     void FadeIn24 (Time);
  843.             D0
  844.  
  845.     long Time;
  846.  
  847.     FUNCTION
  848.     Fade the current display from black to true colour. 
  849.  
  850.     The Time parameter specifies the amount of time in 1/100 seconds the fade should take and is 
  851.     independent of PAL or NTSC refresh rates.
  852.  
  853.     INPUTS
  854.     Time = Time in 1/100 seconds to complete fade.
  855.  
  856.     RESULT
  857.     None
  858.  
  859.     CONSIDERATIONS
  860.     This function cannot be used in 15bit mode.
  861.  
  862.     SEE ALSO
  863.     FadeOut24()
  864. opal.library/FadeOut24
  865.  
  866.     NAME
  867.     FadeOut24 -- Fade display to black.
  868.  
  869.     SYNOPSIS
  870.     void FadeOut24 (Time)
  871.             D0
  872.     long Time;
  873.  
  874.     FUNCTION
  875.     Fade the current display from true colour to black. 
  876.  
  877.     The Time parameter specifies the amount of time the fade should take and is independent of PAL or 
  878.     NTSC machines.
  879.  
  880.     INPUTS
  881.     Time = Number of 1/100ths seconds in which to complete the fade.
  882.  
  883.     RESULT
  884.     None
  885.  
  886.     CONSIDERATIONS
  887.     This function cannot be used in 15bit mode.
  888.  
  889.     SEE ALSO
  890.     FadeIn24()
  891. opal.library/FreeScreen24
  892.  
  893.     NAME
  894.     FreeScreen24 -- Frees a virtual OpalScreen.
  895.  
  896.     SYNOPSIS
  897.     void FreeScreen24 (OScrn); 
  898.                A0
  899.  
  900.     struct OpalScreen *OScrn;
  901.  
  902.     FUNCTION
  903.     This function deallocates all memory associated with a virtual screen. This is the virtual screen 
  904.     equivalent of CloseScreen24. 
  905.  
  906.     INPUTS
  907.     OScrn    = A pointer to the virtual screen to be freed
  908.  
  909.     RESULT
  910.     None
  911.  
  912.     CONSIDERATIONS
  913.  
  914.  
  915.     SEE ALSO
  916.     CreateScreen24()
  917.     CloseScreen24()
  918.  
  919. opal.library/FreezeFrame24
  920.  
  921.     NAME
  922.     FreezeFrame24 -- Freezes the currently displayed screen.
  923.  
  924.     SYNOPSIS
  925.     void FreezeFrame24 (Freeze);
  926.                 D0
  927.     BOOL Freeze
  928.  
  929.     FUNCTION
  930.     This function freezes the current display. If freeze is TRUE, the display is held static. The display is 
  931.     returned to normal when the value for freeze is FALSE.
  932.  
  933.     Freeze freezes everything on the display including Amiga graphics.
  934.  
  935.     INPUTS
  936.     Freeze    = TRUE (1) = Freeze, FALSE (0) = Unfreeze
  937.  
  938.     RESULT
  939.     None
  940.  
  941.     CONSIDERATIONS
  942.     This functions is available only while a Scan Rate Converter is present.
  943.  
  944.     SEE ALSO
  945.  
  946. opal.library/ILBMtoOV
  947.  
  948.     NAME
  949.     ILBMtoOV -- Converts interleaved bitmap to OpalVision format.
  950.  
  951.     SYNOPSIS
  952.     void ILBMtoOV (OScrn, ILBMData, SrcWidth, Lines, TopLine, SrcPlanes)
  953.             A0    A1        D0        D1     D2       D3
  954.  
  955.     struct OpalScreen *OScrn;
  956.     UBYTE *ILBMData;
  957.     long SrcWidth;
  958.     long Lines;
  959.     long TopLine;
  960.     long SrcPlanes;
  961.  
  962.     FUNCTION
  963.     Converts interleaved bitmap memory into OpalVision memory format and stores this in the OpalScreen 
  964.     supplied.
  965.  
  966.     The source data will be clipped if it is wider than the destination screen, or will be padded out if it is 
  967.     narrower.
  968.  
  969.     This function is provided to simplify the task of writing a custom IFF loader.
  970.  
  971.     INPUTS
  972.     OScrn         = Destination OpalScreen.
  973.     ILBMData     = interleaved planes of source data.
  974.     SourceWidth     = Width of source ILBM data.
  975.     Lines         = Number of lines to convert.
  976.     TopLine     = Starting line to place destination data.
  977.     SrcPlanes    =The number of planes contained in the ILBM data.
  978.  
  979.     RESULT
  980.     None
  981.  
  982.     CONSIDERATIONS
  983.  
  984.  
  985.     SEE ALSO
  986.     OVtoILBM()
  987.  
  988. opal.library/LatchDisplay24
  989.  
  990.     NAME
  991.     LatchDisplay24 -- Locks OpalVision  display
  992.  
  993.     SYNOPSIS
  994.     void LatchDisplay24 (Latch)
  995.  
  996.     BOOL Latch;
  997.  
  998.     FUNCTION
  999.     LatchDisplay24 sets or clears the Latch bit in the control line register. If this bit is set,  the OpalVision 
  1000.     display will remain active regardless of whether there is a valid control line in the Amigas' output. If 
  1001.     CloseScreen24() is called after the latch bit is set, all memory and resources will be freed but the display 
  1002.     will still be active, even if the Amiga is reset.
  1003.  
  1004.     OpalHotKey uses this technique, images are loaded and updated into the buffer, latched and then the 
  1005.     screen is closed. If any register information needs to be changed, such as changing display priority a 
  1006.     display screen is opened using the CONTROLONLY24 flag which enables registers to be changed 
  1007.     without effecting the contents of the frame buffer.
  1008.  
  1009.     INPUTS
  1010.     Latch    = 0 = Free display, 1 = Latch display.
  1011.  
  1012.     RESULT
  1013.     None
  1014.  
  1015.     CONSIDERATIONS
  1016.  
  1017.  
  1018.     SEE ALSO
  1019.  
  1020. opal.library/LoadImage24
  1021.  
  1022.     NAME
  1023.     LoadImage24 / LoadIFF24 -- Loads an Image file.
  1024.  
  1025.     SYNOPSIS
  1026.     ReturnCode = LoadImage24 (OScrn,FileName,Flags)
  1027.     D0              A0    A1     D0
  1028.  
  1029.     long ReturnCode;
  1030.     struct OpalScreen *OScrn;
  1031.     long Flags;
  1032.     char *FileName;
  1033.  
  1034.     FUNCTION
  1035.     Load an IFF or JPEG file.
  1036.  
  1037.     This is a general purpose image loading routine which will automatically detect and load IFF and JPEG 
  1038.     files. As this is a general loader, the name of this function has been renamed to LoadImage24(), which is 
  1039.     used as a synonym for the previous function name LoadIFF24() to maintain backward compatibility.
  1040.  
  1041.     The IFF portion of this loader will load IFF 24bit, Fast Format 24 bit, Palette mapped (up to 256 colours), 
  1042.     Hold and Modify and Extra half brite files.
  1043.  
  1044.     All palette mapped files will be loaded in the 8 bit palette mapped mode unless the CONVERT24 flag is 
  1045.     set, in which case they will be converted to a non palette mapped 24 bit display.
  1046.  
  1047.     There are several different forms in which LoadImage24 can load an image. The way in which it 
  1048.     functions is dependant on the specified screen and the flags. If the screen pointer is NULL then 
  1049.     LoadImage24 will open a screen itself, the screen it opens will be a display screen unless 
  1050.     VIRTUALSCREEN24 is set in which case a virtual screen will be created.
  1051.  
  1052.     If the passed screen structure is not NULL and the image being loaded is the same resolution, then it will 
  1053.     be loaded into that screen. If this is not the case then the screen will be closed and a new screen of the 
  1054.     same resolution as the file will be opened. However if KEEPRES24 is set, the file will be loaded into the 
  1055.     supplied screen regardless of its resolution. 
  1056.  
  1057.     LoadImage24 returns one of two things. If the files was loaded successfully, a pointer to the screen into 
  1058.     which it was loaded is returned. If an error occurred, then an error code will be returned. To determine 
  1059.     which of these messages has been returned, the value can be compared to OL_ERR_MAXERR, if it is 
  1060.     lower than this value then the result is an error code, if it is greater than this number then it is a screen 
  1061.     pointer. If the image is not IFF or JPEG, OL_ERR_FORMATUNKOWN is returned. 
  1062.  
  1063.     Flags:
  1064.         FORCE24        -  Convert palette mapped files to 24 bit.
  1065.         KEEPRES24         -  Keep the same screen resolution.
  1066.         CLOSEABLE24         -  Opened screen will be closeable.
  1067.         LOADMASK24        -  Load mask plane if present (IFF only).
  1068.         VIRTUALSCREEN24    -  Load image into a virtual screen.
  1069.  
  1070.     The JPEG loader is a baseline loader as specified in the draft standard ISO/IEC Bis 10918-1 it supports 
  1071.     only 8 bit quantization tables and Huffman entropy compression. It can load files with source colour 
  1072.     space of Y Cb Cr, RGB and Grey scale. It does not support non interleaved files, progressive, hierarchical 
  1073.     or lossless modes.
  1074.  
  1075.     INPUTS
  1076.     FileName     = Filename of image to be display (including path).
  1077.     Flags         = see above.
  1078.  
  1079.     RESULT
  1080.     ReturnCode = > OL_ERR_MAXERR Return code is a pointer to an Opal screen structure.
  1081.     ReturnCode = < OL_ERR_MAXERR, Return code indicates error.
  1082.  
  1083.     CONSIDERATIONS
  1084.     This function only loads an image, it does not update the frame buffer. To do this you must call 
  1085.     Refresh24() or LowMemUpdate24().
  1086.  
  1087.     SEE ALSO
  1088.     SaveIFF24()
  1089.     SaveJPEG24()
  1090.     Refresh24()
  1091.     LowMemUpdate24()
  1092.  
  1093. opal.library/LowMemUpdate24
  1094.  
  1095.     NAME
  1096.     LowMemUpdate24 -- Low chip ram usage OpalVision update.
  1097.  
  1098.     SYNOPSIS
  1099.     RetScrn = LowMemUpdate24 (OScrn, Frame);
  1100.     D0              A0     D0
  1101.  
  1102.     struct OpalScreen *RetScrn;
  1103.     struct OpalScreen *OScrn;
  1104.     long Frame;
  1105.  
  1106.     FUNCTION
  1107.     Updates the frame buffer from a virtual screen. This function can update an entire image of any 
  1108.     resolution while only using a small amount of chip ram. This routine uses an 8bit screen to update each 
  1109.     memory segment separately, the CPU is used to copy the bitplane data from the virtual screen to chip 
  1110.     ram. The 8bit plane display screen opened to perform the update is returned, and should be subsequently 
  1111.     closed.
  1112.  
  1113.     The Frame input sets the first memory segment to be updated, this will normally be 0. This can be set to 
  1114.     6 for example to update a lores screen to bank1  instead of bank0. 
  1115.  
  1116.     NOTE:  OScrn must be a pointer to a virtual screen.
  1117.  
  1118.     INPUTS
  1119.     OScrn    = The virtual OpalScreen to be displayed
  1120.     Frame    = Memory segment to start update (0..11).
  1121.  
  1122.     RESULT
  1123.     RetScrn       >= OL_ERR_MAXERR Return code is a pointer to an Opal screen structure.
  1124.     RetScrn   < OL_ERR_MAXERR, Return code indicates error.
  1125.  
  1126.     CONSIDERATIONS
  1127.  
  1128.     SEE ALSO
  1129.     LowMem2Update24()
  1130.  
  1131. opal.library/LowMem2Update24
  1132.  
  1133.     NAME
  1134.     LowMem2Update24 -- Low chip ram usage OpalVision update.
  1135.  
  1136.     SYNOPSIS
  1137.     RetScrn = LowMem2Update24 (OScrn, Frame);
  1138.     D0               A0     D0
  1139.  
  1140.     struct OpalScreen *RetScrn;
  1141.     struct OpalScreen *OScrn;
  1142.     long Frame;
  1143.  
  1144.     FUNCTION
  1145.     Updates the frame buffer from a virtual screen. This function can update an entire image of any 
  1146.     resolution while only using a small amount of chip ram. This routine uses an 8bit screen to update each 
  1147.     memory segment separately, the CPU is used to copy the bitplane data from the virtual screen to chip 
  1148.     ram. The 8bit plane display screen opened to perform the update is returned, and should be subsequently 
  1149.     closed.
  1150.  
  1151.     The Frame input sets the first memory segment to be updated, this will normally be 0. This can be set to 
  1152.     6 for example to update a lores screen to bank1  instead of bank0. 
  1153.  
  1154.     This function is similar to LowMemUpdate24() although it only updates the frame buffer memory, it does 
  1155.     not modify the display modes,  CoPro bits or palette information. This is very useful for performing 
  1156.     transitions  between two images in lores, the first image can be written into bank1 and displayed using 
  1157.     LowMemUpdate24(OScrn,6), the second image is then updated transparently into bank0 using 
  1158.     LowMem2Update24(OScrn,0). The dual display stencil can then be used to perform the transition 
  1159.     between bank1 and bank0. Note that bank0 is written to last , as only bank0 contains the dual display 
  1160.     stencil.
  1161.  
  1162.     NOTE:  OScrn must be a pointer to a virtual screen.
  1163.  
  1164.     INPUTS
  1165.     OScrn    = The virtual OpalScreen to be displayed
  1166.     Frame    = Memory segment to start update (0..11).
  1167.  
  1168.     RESULT
  1169.     RetScrn       >= OL_ERR_MAXERR Return code is a pointer to an Opal screen structure.
  1170.     RetScrn   < OL_ERR_MAXERR, Return code indicates error.
  1171.  
  1172.     CONSIDERATIONS
  1173.  
  1174.     SEE ALSO
  1175.     LowMemUpdate24()
  1176.  
  1177. opal.library/LowMemRGB24
  1178.  
  1179.     NAME
  1180.     LowMemRGB24 -- Low chip ram usage OpalVision update from an RGB array.
  1181.  
  1182.     SYNOPSIS
  1183.     RetScrn = LowMemRGB24 (ScreenModes, Frame, Width, Height, Modulo, RGBPlanes);
  1184.     D0            D0        D1       D2      D3      D4      A0
  1185.  
  1186.     struct OpalScreen *RetScrn;
  1187.     long ScreenModes,Frame,Width,Height,Modulo;
  1188.     UBYTE *RGBPlanes[3]
  1189.  
  1190.     FUNCTION
  1191.  
  1192.     Updates the frame buffer from RGB byte planes. This function can update an entire image of any 
  1193.     resolution while only using a small amount of chip ram. This routine uses an 8bit screen to update each 
  1194.     memory segment separately, the RGB data is converted into bitplane format one segment at a time and 
  1195.     transferred into the framebuffer. The 8bit plane display screen opened to perform the update is returned, 
  1196.     and should be subsequently closed.
  1197.  
  1198.     The Modulo parameter allows interleaved RGB data to be updated as well, in this case RGBPlanes would 
  1199.     be initialised 'Width' bytes apart, and modulo would be set to 2*Width.
  1200.  
  1201.     This function is useful for image processing programs such as ADPro and Imagemaster which store 
  1202.     images in byte planes.
  1203.  
  1204.     INPUTS
  1205.     ScreenModes    = See OpenScreen24, these flags enable the resolution and format of the     
  1206.                  displayed image to be set.
  1207.     Frame         = The memory segment to start the update, (0..1)
  1208.     Width        = Width of the RGB Array (in pixels).
  1209.     Height        = Height of the RGB Array. 
  1210.     Modulo        = Modulo to be added after each line in the RGB Array.
  1211.     RGBPlanes    = Pointers to the three byte planes required (R,G,B).
  1212.  
  1213.     RESULT
  1214.     RetScrn       >= OL_ERR_MAXERR Return code is a pointer to an Opal screen structure.
  1215.     RetScrn   < OL_ERR_MAXERR, Return code indicates error.
  1216.  
  1217.     CONSIDERATIONS
  1218.  
  1219.     SEE ALSO
  1220.  
  1221. opal.library/OpenScreen24
  1222.  
  1223.     NAME
  1224.     OpenScreen24 -- Allocates all resources and displays an OpalVision screen.
  1225.  
  1226.     SYNOPSIS
  1227.     OScrn = OpenScreen24 (ScreenModes)
  1228.     D0              D0
  1229.  
  1230.     struct OpalScreen *OScrn;
  1231.     long ScreenModes;
  1232.  
  1233.     FUNCTION
  1234.     This function creates a display screen and allocates all the resources required to display the screen. The 
  1235.     Frame buffer memory is cleared and updates are disabled to the frame buffer memory.
  1236.  
  1237.     The screen is positioned according to Amiga preferences, however if the vertical starting position defined 
  1238.     in preferences is too high up, preferences will be modified to set the vertical starting position to the 
  1239.     highest possible, the preferences will be restored when the screen is closed. 
  1240.  
  1241.     The screen will be opened as single playfield, single display mode with OVPriority.
  1242.  
  1243.     If the CONTROLONLY24 flag is set, the screen will be opened without any bitplanes,  this enables the 
  1244.     copro or palette information of a 'latched on'  to be modified without losing the contents of the frame 
  1245.     buffer.
  1246.  
  1247.     ScreenModes:
  1248.         INTERLACE24    - Open an interlaced screen.
  1249.         HIRES24     - Open a Hires screen.
  1250.         OVERSCAN24    - Open an overscan screen.
  1251.         PLANES15    - 15 bit true colour display.
  1252.         PLANES8        - 8 bit true colour/palette mapped display.
  1253.         CLOSEABLE24    - Screen can be closed by another task.
  1254.         PALMAP24    - Open a palette mapped screen.
  1255.         CONTROLONLY24    - Open a bitplaneless screen.
  1256.  
  1257.     Screen Sizes:
  1258.  
  1259.         Hires    Interlaced    Overscan    PAL    NTSC
  1260.         No    No        No        320x256 320x200
  1261.         Yes    No        No        640x256    640x200
  1262.         No    Yes        No        320x512    320x400
  1263.         Yes    Yes        No        640x512    640x400
  1264.  
  1265.     The size of the screen opened will be as specified above unless there is not enough chip ram available, in 
  1266.     which case the maximum amount of lines possible will be displayed. If there is insufficient chip memory, 
  1267.     to hold half of the scan lines, then OpenScreen will be aborted and NULL returned. If the PLANES8 or 
  1268.     PLANES15 flag is not set, a 24 bit screen will be opened.
  1269.  
  1270.     INPUTS
  1271.     ScreenModes    =  See above.
  1272.  
  1273.     RESULT
  1274.     OScrn    =  A pointer to an OpalScreen structure or NULL if unsuccessful.
  1275.  
  1276.     CONSIDERATIONS
  1277.  
  1278.  
  1279.     SEE ALSO
  1280.     CloseScreen24()
  1281.     LatchDisplay24()
  1282.  
  1283. opal.library/OVPriority
  1284.  
  1285.  
  1286.     NAME
  1287.     OVPriority -- Give OpalVision graphics priority over Amiga graphics.
  1288.  
  1289.     SYNOPSIS
  1290.     void OVPriority (void);
  1291.  
  1292.     FUNCTION
  1293.     This function sets the OVPRI bit of all coprocessor instructions which gives OpalVision graphics priority 
  1294.     over Amiga graphics. If a dual display has not been set, only OpalVision graphics will be visible.
  1295.  
  1296.     INPUTS
  1297.     None
  1298.  
  1299.     RESULT
  1300.     None
  1301.  
  1302.     CONSIDERATIONS
  1303.     If an Amiga display bottom has been set using SetDisplayBottom24(), the coprocessor instructions will 
  1304.     not be modified for that region of the display.
  1305.  
  1306.     SEE ALSO
  1307.     AmigaPriority24()
  1308.     DualDisplay24()
  1309.  
  1310. opal.library/OVtoBitPlane
  1311.     
  1312.     NAME
  1313.     OVtoBitPlane -- Convert OpalVision bit plane data to standard bitplanes.
  1314.  
  1315.     SYNOPSIS
  1316.     void OVtoBitPlane (OScrn, BitPlanes, DestWidth, Lines, TopLine) 
  1317.                A0      A1         D0        D1     D2
  1318.  
  1319.     struct OpalScreen *OScrn;
  1320.     UBYTE **BitPlanes[];
  1321.     long DestWidth;
  1322.     long Lines;
  1323.     long TopLine;
  1324.  
  1325.     FUNCTION
  1326.     Converts OpalVision bitplane format to standard bitplane data. The destination data will be non-
  1327.     interleaved 24, 15 or 8 planes depending on the type of display OScrn is. Note that the 15bit display 
  1328.     mode is actually stored internally as 16 bitplanes which in turn causes this function to return 16 planes 
  1329.     instead of 15.
  1330.  
  1331.     DestWidth specifies the width of the destination bitplanes, if the width is less than the source planes, they 
  1332.     will be clipped. If the destination width is larger, the remaining bytes on each scan line will be skipped.
  1333.  
  1334.     The OpalScreen can be any size, and reside in fast or chip ram.
  1335.  
  1336.     The array of bitplane pointers passed to this function must contain 8, 16 or 24 entries depending on the 
  1337.     screen type.
  1338.  
  1339.     INPUTS
  1340.     OScrn         = OpalScreen structure describing source data.
  1341.     BitPlanes    = Array of bitplane pointers to take the destination data.
  1342.     DestWidth    = Width in bytes of destination planes (must be even).
  1343.     Lines         = Total number of scan lines to convert.
  1344.     TopLine     = Starting line for conversion within the OpalScreen.
  1345.  
  1346.     RESULT
  1347.     None
  1348.  
  1349.     CONSIDERATIONS
  1350.     All bitplanes must be on a word boundary and the destination width must be even.
  1351.  
  1352.     SEE ALSO
  1353.     BitplanetoOV()
  1354.  
  1355. opal.library/OVtoILBM
  1356.  
  1357.     NAME
  1358.     OVtoILBM -- Converts OpalVision bit planes to interleaved bitmap format.
  1359.  
  1360.     SYNOPSIS
  1361.     void OVtoILBM (OScrn, ILBMData, DestWidth, Lines, TopLine)
  1362.             A0    A1        D0         D1     D2
  1363.  
  1364.     struct OpalScreen *OScrn;
  1365.     UBYTE *ILBMData;
  1366.     long DestWidth;
  1367.     long Lines;
  1368.     long TopLine;
  1369.  
  1370.     FUNCTION
  1371.     Converts bitplane information from the supplied OpalScreen, starting at the scan line indicated by 
  1372.     TopLine, into interleaved bitmap format.
  1373.  
  1374.     If the source OpalScreen is wider than the destination width, the planes will be clipped. If the OpalScreen 
  1375.     is narrower, the extra bytes on each line will be skipped. The OpalScreen can be any size, and reside in 
  1376.     fast or chip ram.
  1377.  
  1378.     The memory pointed to by ILBMData must be large enough to hold
  1379.     DestWidth * lines * (8 or 16 or 24 depending on screen type) bytes.
  1380.  
  1381.     INPUTS
  1382.     OScrn         = OpalScreen structure describing source data.
  1383.     ILBMData     = Pointer to buffer to hold destination ILBM data.
  1384.     DestWidth    = Width of destination ILBM planes. (must be even)
  1385.     Lines         = Total number of scan lines to convert.
  1386.     TopLine        = Starting line for conversion within the OpalScreen.
  1387.  
  1388.     RESULT
  1389.     None
  1390.  
  1391.     CONSIDERATIONS
  1392.     ILBMData must start on a word boundary, and DestWidth must be even.
  1393.  
  1394.     SEE ALSO
  1395.     ILBMtoOV()
  1396.  
  1397. opal.library/OVtoRGB
  1398.  
  1399.     NAME
  1400.     OVtoRGB -- Converts OpalVision bitplane data to three planes of RGB.
  1401.  
  1402.     SYNOPSIS
  1403.     void OVtoRGB (OScrn, RGBPlanes[], Top, Left, Width, Height)
  1404.               A0     A1           D0   D1    D2     D3
  1405.  
  1406.     struct OpalScreen *OScrn;
  1407.     UBYTE **RGBPlanes[];
  1408.     long Top;
  1409.     long Left;
  1410.     long Width;
  1411.     long Height;
  1412.  
  1413.     FUNCTION
  1414.     This call converts bitplane data from the OpalScreen into three planes, one containing Red, one Blue and 
  1415.     the last Green, each of these has one byte per pixel. This is useful for making 'brush' cut-outs, or for 
  1416.     subsequent scaling of data.
  1417.  
  1418.     This function is more flexible than the other memory conversion routines in that it can convert a 
  1419.     rectangular region of bitplane memory positioned anywhere within the source screen.
  1420.  
  1421.     The OpalScreen can be any size, and reside in fast or chip ram.
  1422.  
  1423.     INPUTS
  1424.     OScrn        = OpalScreen structure containing source bitplanes.
  1425.     RGBPlanes    = Pointer to an array of 3 plane pointers.
  1426.     Top        = x coordinate of top left hand corner to start conversion.
  1427.     Left         = y coordinate of top left hand corner to start conversion.
  1428.     Width         = Width in pixels of region to cut.
  1429.     Height         = Number of lines to cut.
  1430.  
  1431.     RESULT
  1432.  
  1433.  
  1434.     CONSIDERATIONS
  1435.     The destination planes must be on a word boundary.
  1436.  
  1437.     SEE ALSO
  1438.     RGBtoOV()
  1439.  
  1440. opal.library/PaletteMap24
  1441.  
  1442.     NAME
  1443.     PaletteMap24 -- Enable/Disable palette mapping.
  1444.  
  1445.     SYNOPSIS
  1446.     PaletteMap24 (PaletteMap)
  1447.             D0
  1448.  
  1449.     BOOL PaletteMap;
  1450.  
  1451.     FUNCTION
  1452.     If PaletteMap = TRUE, turn on palette mapping, else turn palette mapping off. This function always 
  1453.     operates on the active display screen.
  1454.  
  1455.     INPUTS
  1456.     PaletteMap = True to turn palette mapping on, to turn it off.
  1457.  
  1458.     RESULT
  1459.     None
  1460.  
  1461.     CONSIDERATIONS
  1462.     This function cannot be used in 15bit mode.
  1463.  
  1464.     SEE ALSO
  1465.     SetPalette24()
  1466.  
  1467. opal.library/ReadPFPixel24
  1468.  
  1469.     NAME
  1470.     ReadPFPixel24 -- Returns the state of a give playfield stencil pixel.
  1471.  
  1472.     SYNOPSIS
  1473.     Result = ReadPFPixel24 (OScrn,  x,  y)
  1474.     D0            A0    D0  D1
  1475.  
  1476.     long Result;
  1477.     struct OpalScreen *OScrn;
  1478.     long x;
  1479.     long y;
  1480.  
  1481.     FUNCTION
  1482.     This function returns 1 if the corresponding playfield stencil pixel is set, or 0 if it is cleared. If the 
  1483.     coordinates are outside of the clip boundary then -1 is returned.
  1484.  
  1485.     INPUTS
  1486.     OScrn     = OpalScreen to be read.
  1487.     x     = x Coordinate of pixel to read.
  1488.     y     = y Coordinate of pixel to read.
  1489.  
  1490.     RESULT
  1491.     Result = 0 if pixel clear , or 1 if pixel set, -1 if pixel is out of range.
  1492.  
  1493.     CONSIDERATIONS
  1494.  
  1495.     SEE ALSO
  1496.     WritePFPixel24()
  1497.     ClearPFStencil24()
  1498.     SetPFStencil24()
  1499.  
  1500. opal.library/ReadPixel24
  1501.  
  1502.     NAME
  1503.     ReadPixel24 -- Returns colour information for a given pixel.
  1504.  
  1505.     SYNOPSIS
  1506.     Error = ReadPixel24 (OScrn,  x,  y)
  1507.     D0             A0         D0  D1
  1508.  
  1509.     long Error;
  1510.     struct OpalScreen *OScrn;
  1511.     long x;
  1512.     long y;
  1513.  
  1514.     FUNCTION
  1515.     Return the colour (bit plane) information for a given pixel. If the OpalScreen is in palette mapped mode, 
  1516.     the actual bit plane data (and not the corresponding palette value) will be returned.
  1517.  
  1518.     The returned value is placed in Red, Green and Blue in the OpalScreen structure while in 24bit modes. In 
  1519.     15bit mode, the colour is returned in Red and Green, while in 8bit mode, the colour is returned in Red. 
  1520.     The GetPen macros can be used to extract the components from the returned value. 
  1521.  
  1522.     Use the macros GetCol24(), GetCol15(), GetCol8() or GetCol8P() for 8 bit palette mapped to return the 
  1523.     pixel value.
  1524.  
  1525.     If the coordinates are outside the screen's clipping region, Error will be -1, else Error = 0.
  1526.  
  1527.     This function can operate on any sized screens in chip or fast ram.
  1528.  
  1529.     INPUTS
  1530.     OScrn     = OpalScreen to be read.
  1531.     x     = x Coordinate of pixel to read.
  1532.     y     = y Coordinate of pixel to read.
  1533.  
  1534.     RESULT
  1535.     Error     = 0 if no error occurred, or -1 if pixel was out of the clipping region.
  1536.  
  1537.     CONSIDERATIONS
  1538.  
  1539.  
  1540.     SEE ALSO
  1541.  
  1542. WritePixel24()
  1543.  
  1544. opal.library/ReadPRPixel24
  1545.  
  1546.     NAME
  1547.     ReadPRPixel24 -- Returns the state of a give priority stencil pixel.
  1548.  
  1549.     SYNOPSIS
  1550.     Result = ReadPRPixel24 (OScrn,  x,  y)
  1551.     D0            A0    D0  D1
  1552.  
  1553.     long Result;
  1554.     struct OpalScreen *OScrn;
  1555.     long x;
  1556.     long y;
  1557.  
  1558.     FUNCTION
  1559.     This function returns 1 if the corresponding priority stencil pixel is set, or 0 if it is cleared. If the 
  1560.     coordinates are outside of the clip boundary then -1 is returned.
  1561.  
  1562.     INPUTS
  1563.     OScrn     = OpalScreen to be read.
  1564.     x     = x Coordinate of pixel to read.
  1565.     y    = y Coordinate of pixel to read.
  1566.  
  1567.     RESULT
  1568.     Result     = 0 if pixel clear , or 1 if pixel set, -1 if pixel is out of range.
  1569.  
  1570.     CONSIDERATIONS
  1571.  
  1572.     SEE ALSO
  1573.  
  1574.     WritePRPixel24()
  1575.     ClearPRStencil24()
  1576.     SetPRStencil24()
  1577.  
  1578. opal.library/RectFill24
  1579.  
  1580.     NAME
  1581.     RectFill24 -- Draws a solid rectangle.
  1582.  
  1583.     SYNOPSIS
  1584.     void RectFill24 (OScrn, Left, Top, Bottom, Right)
  1585.              A0    D0    D1   D2      D3
  1586.  
  1587.     struct OpalScreen *OScrn;
  1588.     long Left;
  1589.     long Top;
  1590.     long Bottom;
  1591.     long Right;
  1592.  
  1593.     FUNCTION
  1594.     Draws a solid rectangle with the colour specified by Pen_R,Pen_G & Pen_B in the OpalScreen structure.
  1595.  
  1596.     The Rectangle is clipped if all or part of it lies outside the clipping region.
  1597.  
  1598.     INPUTS
  1599.     OScrn    = OpalScreen to be rendered into.
  1600.     Left    = x coordinate of top left-hand corner of the rectangle.
  1601.     Top    = y coordinate of top left-hand corner of the rectangle.
  1602.     Bottom    = x coordinate of the bottom right-hand corner of rectangle.
  1603.     Right    = y coordinate of the bottom right-hand corner of rectangle.
  1604.  
  1605.     RESULT
  1606.     None
  1607.  
  1608.     CONSIDERATIONS
  1609.  
  1610.  
  1611.     SEE ALSO
  1612.  
  1613. opal.library/Refresh24
  1614.  
  1615.     NAME
  1616.     Refresh24 -- Refreshes the frame buffer.
  1617.  
  1618.     SYNOPSIS
  1619.     void Refresh24 (void)
  1620.  
  1621.     FUNCTION
  1622.     Initiates DMA of the currently displayed OpalScreen to the framebuffer. This function will update the 
  1623.     framebuffer in the minimum number of frames required, stop DMA (updates) and return.
  1624.  
  1625.     This function should be called after any drawing routine, and other routines such as LoadIFF24 which 
  1626.     modify memory, to make the frame buffer (and hence display) consistent with the image in Amiga 
  1627.     memory.
  1628.  
  1629.     INPUTS
  1630.     None
  1631.  
  1632.     RESULT
  1633.     None
  1634.  
  1635.     CONSIDERATIONS
  1636.  
  1637.  
  1638.     SEE ALSO
  1639.     UpdateDelay24()
  1640.     StopUpdate24()
  1641.     UpdatePFStencil24()
  1642.     UpdateAll24()
  1643.  
  1644. opal.library/RegWait24
  1645.  
  1646.     NAME
  1647.     RegWait24 -- Wait for register update to complete.
  1648.  
  1649.     SYNOPSIS
  1650.     void RegWait24 (void);
  1651.  
  1652.     FUNCTION
  1653.     This function waits for register information to be updated to the OpalVision before returning, or returns 
  1654.     immediately if no updates are pending.
  1655.  
  1656.     This function is important for synchronizing your program with the OpalVision's update scheme. After 
  1657.     any direct modification of OpalVision registers or after a call to a library function which modifies 
  1658.     registers, this function should be called to allow the update to occur, If this function is not called register 
  1659.     data may be lost.
  1660.  
  1661.     INPUTS
  1662.     None
  1663.  
  1664.     RESULT
  1665.     None
  1666.  
  1667.     CONSIDERATIONS
  1668.  
  1669.  
  1670.     SEE ALSO
  1671.  
  1672. opal.library/RGBtoOV
  1673.  
  1674.     NAME
  1675.     RGBtoOV -- Converts three planes of RGB to OpalVision bitplane data.
  1676.  
  1677.     SYNOPSIS
  1678.     void RGBtoOV (OScrn, RGBPlanes[], Top, Left, Width, Height)
  1679.               A0     A1           D0   D1    D2     D3
  1680.  
  1681.     struct OpalScreen *OScrn;
  1682.     UBYTE **RGBPlanes[];
  1683.     long Top;
  1684.     long Left;
  1685.     long Width;
  1686.     long Height;
  1687.  
  1688.     FUNCTION
  1689.     This call converts three source planes, one containing Red, one Blue and the last Green into OpalVision 
  1690.     bitplane format. This function is useful for pasting clipped regions (using OVtoRGB) back into 
  1691.     OpalVision memory, or for pasting back data after scaling.
  1692.  
  1693.     Unlike the other conversion routines, this function is clipped if it is outside of the clipping region, this 
  1694.     enables it to be used as a drawing function rather than a conversion function.
  1695.  
  1696.     The OpalScreen can be any size, and reside in fast or chip ram.
  1697.  
  1698.     INPUTS
  1699.     OScrn        = OpalScreen structure containing destination bitplanes.
  1700.     RGBPlanes    = Pointer to an array of 3 plane pointers.
  1701.     Top        = x coordinate of top left hand corner to start conversion.
  1702.     Left        = y coordinate of top left hand corner to start conversion.
  1703.     Width        = Width in pixels of region to cut.
  1704.     Height        = Number of lines to cut.
  1705.  
  1706.     RESULT
  1707.     None
  1708.  
  1709.     CONSIDERATIONS
  1710.  
  1711.  
  1712.     SEE ALSO
  1713.     OVtoRGB()
  1714.  
  1715. opal.library/SaveIFF24
  1716.  
  1717.     NAME
  1718.     SaveIFF24 -- Save an OpalScreen as an IFF file.
  1719.  
  1720.     SYNOPSIS
  1721.     Error = SaveIFF24 (OScrn, FileName, ChunkFunction, Flags)
  1722.     D0                 A0     A1        A2             D0
  1723.  
  1724.     long Error;
  1725.     struct OpalScreen *OScrn;
  1726.     char *FileName;
  1727.     long (*ChunkFunction)();
  1728.     long Flags;
  1729.  
  1730.     FUNCTION
  1731.  
  1732.     SaveIFF24 will save any sized OpalScreen in normal IFF file format. The chunks written will include
  1733.  
  1734.         CAMG    - Containing the resolution  (Hires/Interlace/Overscan)
  1735.         CMAP    - Colour map if in 8bit mode.
  1736.         CLUT    - Colour lookup tables if in true colour mode.
  1737.         OVTN    - OpalVision 24bit thumb-nail for display in OpalPaint,
  1738.               OpalShow and other system software.
  1739.         BODY    - Standard 24 bit ILBM data using byte run encoding.
  1740.  
  1741.     If ChunkFunction is not NULL, the function that it points at will be called after the file has been opened 
  1742.     (and FORM ILBM has been written) and before any other chunks have been written. ChunkFunction is 
  1743.     used to insert your own chunks into the IFF file before any of the above chunks. The DOS File Handle for 
  1744.     the open file will be passed to the function on the stack (in standard C calling convention) the chunk 
  1745.     function must return 0 or an error code.
  1746.  
  1747.     Flags:
  1748.         OVFASTFORMAT     - Save as OpalVision fast format.
  1749.         NOTHUMBNAIL    - Inhibit writing thumb-nail chunk.
  1750.         SAVEMASK24        - Saves mask plane if one exists.
  1751.  
  1752.     INPUTS
  1753.     OScrn        = OpalScreen to be saved.
  1754.     FileName    = Filename of file to be written (including full path).
  1755.     ChunkFunction    = Pointer to code to be executed after file is opened.
  1756.  
  1757.     RESULT
  1758.     Error    = 0 if no error code, >0 if error occurred.
  1759.  
  1760.     CONSIDERATIONS
  1761.  
  1762.     SEE ALSO
  1763.  
  1764.     LoadImage24()
  1765.     SaveJPEG24()
  1766.  
  1767. opal.library/SaveJPEG24
  1768.  
  1769.     NAME
  1770.     SaveJPEG24 -- Save an OpalScreen as a JPEG JFIF file.
  1771.  
  1772.     SYNOPSIS
  1773.     Error = SaveJPEG24 (OScrn, FileName, Flags, Quality)
  1774.     D0            A0       A1         D0     D1
  1775.  
  1776.     long Error;
  1777.     struct OpalScreen *OScrn;
  1778.     char *FileName;
  1779.     long Flags;
  1780.     long Quality;
  1781.  
  1782.     FUNCTION
  1783.     SaveJPEG24 will save any sized OpalScreen in the JPEG JFIF file format. JPEG is a compression 
  1784.     standard which enables a large amount of compression to be gained on continuous tone images with 
  1785.     minimum loss in image quality. It should be stressed that this compression method is based on 
  1786.     continuous tone images and compression of images with sharp edges may suffer more degradation. For 
  1787.     more details see the JPEG draft  standard ISO/IEC Dis10918-1. 
  1788.  
  1789.     This generates a base line JPEG file using interleaved components, Huffman entropy compression and 8 
  1790.     bit quatization tables. A thumbnail will also be written into the APP0 marker of the JFIF file unless the 
  1791.     NOTHUMBNAIL flag is set.
  1792.  
  1793.     The quality factor is a percentage value (0...100) which defines the allowable amount of loss in the 
  1794.     compressed image. A factor of 100 corresponds to a quantization table of all 1's and hence has no 
  1795.     quantization loss. A value of 50 corresponds to the quantization tables suggested by the draft standard as 
  1796.     being acceptable for good image quality. A reasonable default value to use is 75, using this level for 
  1797.     continuous tone scanned images a compression factor of  between 15:1 and 20:1 is typical. 
  1798.  
  1799.     Flags:
  1800.         NOTHUMBNAIL    - Inhibit writing thumb-nail chunk.
  1801.  
  1802.     INPUTS
  1803.     OScrn    = OpalScreen to be saved.
  1804.     FileName= Filename of file to be written (including full path).
  1805.     Flags    = See above.
  1806.     Quality    = (0...100) This determines the amount of loss allowed in the compression of     
  1807.            the image. 100 % corresponds to minimum loss.
  1808.  
  1809.     RESULT
  1810.     Error        = 0 if no error code, >0 if error occurred.
  1811.  
  1812.     CONSIDERATIONS
  1813.  
  1814.     SEE ALSO
  1815.  
  1816.     LoadImage24()
  1817.  
  1818. opal.library/Scroll24
  1819.  
  1820.     NAME
  1821.     Scroll24 -- Scrolls currently displayed OpalVision image.
  1822.  
  1823.     SYNOPSIS
  1824.     void Scroll24 (DeltaX, DeltaY)
  1825.             D0     D1
  1826.  
  1827.     long DeltaX;
  1828.     long DeltaY;
  1829.  
  1830.     FUNCTION
  1831.     This function scrolls the currently displayed image by DeltaX pixels horizontally, and DeltaY lines 
  1832.     vertically, by modifying the video load address register in the OpalVision.
  1833.  
  1834.     DeltaX and DeltaY are signed values, to enable scrolling in all directions.
  1835.  
  1836.     This function also clears the ADDLOAD bit on the first CoPro instruction if it is not already cleared.
  1837.  
  1838.     INPUTS
  1839.     DeltaX    = Number of pixels to scroll horizontally.
  1840.     DeltaY    = Number of lines to scroll vertically.
  1841.  
  1842.     RESULT
  1843.     None
  1844.  
  1845.     CONSIDERATIONS
  1846.     For the Scroll to function correctly, update DMA to the framebuffer must be turned off by calling 
  1847.     StopUpdate24().
  1848.  
  1849.     SEE ALSO
  1850.     SetLoadAddress24()
  1851.  
  1852. opal.library/SetControlBit24
  1853.  
  1854.     NAME
  1855.     SetControlBit24 -- Modifies a bit in the control line register.
  1856.  
  1857.     SYNOPSIS
  1858.     void SetControlBit24 (FrameNumber, BitNumber, State)
  1859.                   D0       D1          D2
  1860.  
  1861.     long FrameNumber;
  1862.     long BitNumber;
  1863.     BOOL State;
  1864.  
  1865.     FUNCTION
  1866.     Sets or clears a bit in the control line register. See "The Opal Control Line Register" for details.
  1867.  
  1868.     There are 14 different versions of the control line register used to update the maximum of 12 different 
  1869.     memory segments. These differ by the state of the bank and field write enable bits. The frame number 
  1870.     variable specifies which one of these registers should be updated, for bits such as AUTO or COL/CoPro a 
  1871.     global change may be required (i.e. changing all 12 control lines). 
  1872.  
  1873.         Frame Number        Description
  1874.              0        Red Bank0, Field0 Update
  1875.              1        Green Bank0, Field0 Update
  1876.              2        Blue Bank0, Field0 Update
  1877.              3        Red Bank0, Field1 Update
  1878.              4        Green Bank0, Field1 Update
  1879.              5        Blue Bank0, Field1 Update
  1880.              6        Red Bank1, Field0 Update
  1881.              7        Green Bank1, Field0 Update
  1882.              8        Blue Bank1, Field0 Update
  1883.              9        Red Bank1, Field1 Update
  1884.              10        Green Bank1, Field1 Update
  1885.              11        Blue Bank1, Field1 Update
  1886.              12        Field 0 Display only
  1887.              13        Field 1 Display only
  1888.  
  1889.  
  1890.     INPUTS
  1891.     FrameNumber    = The OpalVision update frame number to modify. One frame corresponds to 
  1892.             one bank update (maximum 12 frames, 2 noupdate lists).
  1893.     BitNumber    = Bit number within control line to modify (4...19).
  1894.     State         = State to be written into bit (Boolean).
  1895.  
  1896.     RESULT
  1897.     None
  1898.  
  1899.     CONSIDERATIONS
  1900.     These bits should be modified with caution. 
  1901.  
  1902.     SEE ALSO
  1903.     Control Line Register
  1904.  
  1905. opal.library/SetCoPro24
  1906.  
  1907.     NAME
  1908.     SetCoPro24 -- Modifies a single instruction in the CoPro list. 
  1909.  
  1910.     SYNOPSIS
  1911.     void SetCoPro24 (InstructionNumber, Instruction);
  1912.              D0            D1  
  1913.  
  1914.     long InstructionNumber;
  1915.     long Instruction;
  1916.  
  1917.     FUNCTION
  1918.     This function modifies a single CoPro instruction and initiates an update to the OpalVision CoPro. Note 
  1919.     that this function is much faster than calling UpdateCoPro24().
  1920.  
  1921.     INPUTS
  1922.     InstructionNumber    = The CoPro instruction number (0...289)
  1923.     Instruction        = 8Bit CoPro instruction. See "The CoPro"
  1924.  
  1925.     RESULT
  1926.     None
  1927.  
  1928.     CONSIDERATIONS
  1929.     InstructionNumber should be less than LastCoProIns in the OpalScreen structure.
  1930.  
  1931.     SEE ALSO
  1932.     UpdateCoPro24()
  1933.  
  1934. opal.library/SetDisplayBottom24
  1935.  
  1936.     NAME
  1937.     SetDisplayBottom24 -- Sets the lower limit of the OpalVision screen. 
  1938.  
  1939.     SYNOPSIS
  1940.     Result = SetDisplayBottom24 (BottomLine);
  1941.                     D0
  1942.  
  1943.     long BottomLine;
  1944.     BOOL Result;
  1945.  
  1946.     FUNCTION
  1947.     This function specifies the lower limit of the OpalVision screen. Below this point Amiga only graphics 
  1948.     will be displayed. Once a display bottom has been set, the region below that line will always contains 
  1949.     Amiga graphics regardless of whether the frame buffer is being updated or not. This is useful for 
  1950.     displaying Amiga gadgets on the screen.
  1951.  
  1952.     INPUTS
  1953.     BottomLine    -Specifies the last line of OpalVision graphics.
  1954.  
  1955.     RESULT
  1956.     Result         = 1 if operation successful, 0 if operation failed.
  1957.  
  1958.     CONSIDERATIONS
  1959.     This function uses the CoPro to enable Amiga graphics on the bottom section of the screen. To ensure 
  1960.     that the display is not corrupted, only CoPro instructions up to the line specified by LastCoProIns in the 
  1961.     OpalScreen structure should be modified.
  1962.  
  1963.     SEE ALSO
  1964.     ClearDisplayBottom24 ()
  1965.  
  1966. opal.library/SetHires24
  1967.  
  1968.     NAME
  1969.     SetHires24 -- Enable a hires display for a section of the screen. 
  1970.  
  1971.     SYNOPSIS
  1972.     Result = SetHires24 (TopLine, Lines);
  1973.                  D0       D1
  1974.     long TopLine;
  1975.     long Lines;
  1976.  
  1977.     FUNCTION
  1978.     Sets the HIRESDISP bits on CoPro instructions starting at TopLine for 'Lines' number of lines. Both 
  1979.     TopLine and Lines must be specified as a non-interlaced scan line (i.e. must be divided by 2 if an 
  1980.     interlaced screen).
  1981.  
  1982.     INPUTS
  1983.     TopLine        -Specifies the first line to start setting HIRESDISP bits.
  1984.     Lines        -Number of lines to modify.
  1985.  
  1986.     RESULT
  1987.     None
  1988.  
  1989.     CONSIDERATIONS
  1990.  
  1991.     SEE ALSO
  1992.     SetLores24 ()
  1993.  
  1994. opal.library/SetLoadAddress24
  1995.  
  1996.     NAME
  1997.     SetLoadAddress24 -- Updates the OpalVision load address register.
  1998.  
  1999.     SYNOPSIS
  2000.     void SetLoadAddress24 (void)
  2001.  
  2002.     FUNCTION
  2003.     This function uses the Load Address value in the displayed OpalScreen structure to update the load 
  2004.     address register in the OpalVision.
  2005.  
  2006.     This function is useful for scrolling and distortion effects. 
  2007.  
  2008.     The modulo for a scan line is given in the OpalScreen structure and is independent of the display 
  2009.     resolution.
  2010.  
  2011.     INPUTS
  2012.     None
  2013.  
  2014.     RESULT
  2015.     None
  2016.  
  2017.     CONSIDERATIONS
  2018.     Load Address only has an effect when a CoPro instruction having its ADDLOAD bit cleared is executed. 
  2019.     Therefore a combination of CoPro instructions and the address load register are required to produce the 
  2020.     effect.
  2021.  
  2022.     SEE ALSO
  2023.     Scroll24()
  2024.  
  2025. opal.library/SetLores24
  2026.  
  2027.     NAME
  2028.     SetLores24 -- Enable a Lores display for a section of the screen. 
  2029.  
  2030.     SYNOPSIS
  2031.     Result = SetLores24 (TopLine, Lines);
  2032.                  D0       D1
  2033.     long TopLine;
  2034.     long Lines;
  2035.  
  2036.     FUNCTION
  2037.     Clears the HIRESDISP bits on CoPro instructions starting at TopLine for 'Lines' number of lines. Both 
  2038.     TopLine and Lines must be specified as a non-interlaced scan line (i.e. must be divided by 2 if an 
  2039.     interlaced screen).
  2040.  
  2041.     INPUTS
  2042.     TopLine        -Specifies the first line to start clearing HIRESDISP bits.
  2043.     Lines        -Number of lines to modify.
  2044.  
  2045.     RESULT
  2046.     None
  2047.  
  2048.     CONSIDERATIONS
  2049.  
  2050.     SEE ALSO
  2051.     SetHires24 ()
  2052.  
  2053. opal.library/SetPFStencil24
  2054.  
  2055.     NAME
  2056.     SetPFStencil24 -- Sets the PlayField Stencil of the specified Screen.
  2057.  
  2058.     SYNOPSIS
  2059.     void SetPFStencil24 (OScrn);
  2060.                  A0
  2061.  
  2062.     struct OpalScreen *OScrn;
  2063.  
  2064.     FUNCTION
  2065.     Sets the playfield stencil (least significant bit of green bank 0) of all of the pixels in the specified screen.
  2066.  
  2067.     INPUTS
  2068.     OScrn    = OpalScreen structure.
  2069.  
  2070.     RESULT
  2071.     None
  2072.  
  2073.     CONSIDERATIONS
  2074.     This will only have an effect if Dual Playfield mode has been set up using DualPlayField24().
  2075.  
  2076.     SEE ALSO
  2077.     ClearPFStencil()
  2078.     DualPlayField24()
  2079.     SinglePlayField24()
  2080.  
  2081. opal.library/SetPRStencil24
  2082.  
  2083.     NAME
  2084.     SetPRStencil24 -- Sets the Priority Stencil of the specified Screen.
  2085.  
  2086.     SYNOPSIS
  2087.     void SetPRStencil24 (OScrn);
  2088.                  A0
  2089.  
  2090.     struct OpalScreen *OScrn;
  2091.  
  2092.     FUNCTION
  2093.     Sets the priority stencil (least significant bit of blue bank 0) of all pixels in the specified screen.
  2094.  
  2095.     INPUTS
  2096.     OScrn    = OpalScreen structure.
  2097.  
  2098.     RESULT
  2099.     None
  2100.  
  2101.     CONSIDERATIONS
  2102.     This will only have an effect if dual OpalVision/Amiga display mode has been set up using 
  2103.     DualDisplay24().
  2104.  
  2105.     SEE ALSO
  2106.     ClearPRStencil()
  2107.     DualDisplay24()
  2108.     SingleDisplay24()
  2109.  
  2110. opal.library/SetRGB24
  2111.  
  2112.     NAME
  2113.     SetRGB24 -- Updates a single palette entry to the OpalVision palette registers.
  2114.  
  2115.     SYNOPSIS
  2116.     void SetRGB24 (Entry, Red,  Green,  Blue);
  2117.             D0    D1    D2      D3
  2118.  
  2119.     long Entry;
  2120.     long Red;
  2121.     long Green;
  2122.     long Blue;
  2123.  
  2124.     FUNCTION
  2125.     This function updates a single palette entry in the OpalVision palette registers.
  2126.  
  2127.     INPUTS
  2128.     Entry    - The entry selected for update (0-255).
  2129.     Red    - Red value (0-255).
  2130.     Green    - Green value (0-255).
  2131.     Blue    - Blue value (0-255).
  2132.  
  2133.     RESULT
  2134.     None
  2135.  
  2136.     CONSIDERATIONS
  2137.     This function will only have a visible effect when in palette mapped mode.
  2138.  
  2139.     SEE ALSO
  2140.     PaletteMap ()
  2141.     SetPalette ()
  2142.  
  2143. opal.library/SetScreen24
  2144.  
  2145.     NAME
  2146.     SetScreen24 -- Fills screen with a specified colour.
  2147.  
  2148.     SYNOPSIS
  2149.     void SetScreen24 (OScrn)
  2150.                 A0
  2151.  
  2152.     struct OpalScreen *OScrn;
  2153.  
  2154.     FUNCTION
  2155.     This function is similar to ClearScreen24, but fills the screen with the colour contained in Pen_R,Pen_G 
  2156.     & Pen_B in the OpalScreen structure.
  2157.  
  2158.     INPUTS
  2159.     None
  2160.  
  2161.     RESULT
  2162.     None
  2163.  
  2164.     CONSIDERATIONS
  2165.  
  2166.  
  2167.     SEE ALSO
  2168.     ClearScreen24()
  2169.  
  2170. opal.library/SetSprite24
  2171.  
  2172.     NAME
  2173.     SetSprite24 -- Allows Amiga sprites to be displayed over OpalVision graphics.
  2174.  
  2175.     SYNOPSIS
  2176.     void SetSprite24 (SpriteData, SpriteNumber);
  2177.               A0          D0
  2178.  
  2179.     USHORT *SpriteData;
  2180.     long SpriteNumber;
  2181.  
  2182.     FUNCTION
  2183.     This function allows Amiga hardware sprites to be displayed in OpalVision graphics.
  2184.  
  2185.     Sprites are displayed during both display and update cycles and due to this the sprite data is written into 
  2186.     the frame buffer memory along with the video data. This may be undesirable in some cases, so the sprite 
  2187.     may be removed before starting updates using Refresh24() or UpdateDelay24() by calling SetSprite24() 
  2188.     with SpriteData = NULL
  2189.  
  2190.     SpriteData  is a pointer to a data definition of a spite as passed to the SetPointer() function in the 
  2191.     intuition library. The SpriteNumber is the hardware sprite number to be used to display the sprite, this 
  2192.     will normally be 0 to modify the mouse pointer sprite.
  2193.  
  2194.     N.B.     Passing -1 for the SpriteData will use the currently active Amiga Sprite in the system. For 
  2195.     example SetSprite24((USHORT *) - 1,0) will allow the currently active mouse pointer to be displayed 
  2196.     over the 24 bit image.
  2197.  
  2198.     INPUTS
  2199.     SpriteData    - pointer to the sprite data.
  2200.     SpriteNumber    - Amiga hardware sprite number (0...7).
  2201.  
  2202.     RESULT
  2203.     None
  2204.  
  2205.     CONSIDERATIONS
  2206.     All sprites other than the mouse pointer sprite should be allocated by the user using GetSprite () as sprite 
  2207.     0 is normally used for the mouse pointer and another sprite is required by the opal library for normal 
  2208.     screen updates. 
  2209.  
  2210.     Sprites will only be visible during display cycles if Amiga priority is set and dual display mode is active.
  2211.  
  2212.     SEE ALSO
  2213.  
  2214. opal.library/SingleDisplay24
  2215.  
  2216.     NAME
  2217.     SingleDisplay24 -- Sets up an Amiga/OpalVision single display.
  2218.  
  2219.     SYNOPSIS
  2220.     void SingleDisplay24 (void);
  2221.  
  2222.     FUNCTION
  2223.     This function sets the DUALDISPLAY bit of all CoPro instructions, allowing an OpalVision or Amiga 
  2224.     only display.
  2225.  
  2226.     INPUTS
  2227.     None
  2228.  
  2229.     RESULT
  2230.     None
  2231.  
  2232.     CONSIDERATIONS
  2233.     If Amiga display bottom has been set, using the SetDisplayBottom24() the CoPro instructions will not be 
  2234.     modified for that region of the display.
  2235.  
  2236.     SEE ALSO
  2237.     DualDisplay24()
  2238.  
  2239. opal.library/SinglePlayField24
  2240.  
  2241.     NAME
  2242.     SinglePlayField24() -- Sets up an Amiga or OpalVision single playfield.
  2243.  
  2244.     SYNOPSIS
  2245.     void SinglePlayField24 (void)
  2246.  
  2247.     FUNCTION
  2248.     This function clears the DUALPLAYFIELD bit of all coprocessor instructions, Allowing only one of 
  2249.     OpalVision playfield to be displayed.
  2250.  
  2251.     INPUTS
  2252.     None
  2253.  
  2254.     RESULT
  2255.     None
  2256.  
  2257.     CONSIDERATIONS
  2258.     If an Amiga display bottom has been set, the coprocessor instructions will not be modified for that region 
  2259.     of the display.
  2260.  
  2261.     SEE ALSO
  2262.     DualPlayField24()
  2263.  
  2264. opal.library/StartTransition24
  2265.  
  2266.     NAME
  2267.     StartTransition24 -- Manages buffer to perform play field transitions.
  2268.                  (NOTE: New for V4.0).
  2269.  
  2270.     SYNOPSIS
  2271.     OScrn = StartTransition (VScrn)
  2272.  
  2273.     struct OpalScreen *OScrn,*VScrn;
  2274.  
  2275.     FUNCTION
  2276.     The function sets up the framebuffer to perform a transition. VScrn
  2277.     is a pointer to a VIRTUAL screen containing the image that you wish
  2278.     to perform the transition to. VScrn will be updated to bank 0 of the
  2279.     frambuffer (in lores if the image is hires), and the original contents
  2280.     of the framebuffer will be in bank 1.
  2281.  
  2282.     To perform your transition you'll need to enable either the playfield
  2283.     stencil or the zero detect mode using DualPlayField24() or
  2284.     EnableZDStencil24(). You can then perform the transition by animating
  2285.     the stencil plane. Once the transition is completed, StopTransition24
  2286.     should be called.
  2287.  
  2288.  
  2289.     INPUTS
  2290.     VScrn - A pointer to an OpalScreen, which MUST be a virtual screen.
  2291.  
  2292.     RESULT
  2293.     OScrn - A pointer to the display screen used for the update, this
  2294.         will be an 8bit screen regardless of the resolution of
  2295.         VScrn.
  2296.         If an error occured, then OScrn will be < OL_ERR_MAXERR.
  2297.  
  2298.     CONSIDERATIONS
  2299.     There are alot of issues to be aware of if you wish to perform
  2300.     transitions, the combination of StartTransition24() and
  2301.     StopTransition24() will handle all of these for you, it is 
  2302.     strongly suggested that you use these functions.
  2303.  
  2304.     SEE ALSO
  2305.     StopTransition24()
  2306.     EnableZDStencil()
  2307.     DualPlayField24()
  2308.  
  2309. opal.library/StopTransition24
  2310.  
  2311.     NAME
  2312.     StopTransition24 -- Manages buffer to perform play field transitions.
  2313.                  (NOTE: New for V4.0).
  2314.  
  2315.     SYNOPSIS
  2316.     OScrn = StopTransition (VScrn)
  2317.  
  2318.     struct OpalScreen *OScrn,*VScrn;
  2319.  
  2320.     FUNCTION
  2321.     This function should be called after a transition is performed
  2322.     using StartTransition24(). This will update bank 1 with either
  2323.     the remaning portion of the virtual screen or a second copy of
  2324.     the virtual screen, depending on whether it is lores or hires.
  2325.     The display will also be initialised to the correct format for
  2326.     the virtual screen.
  2327.  
  2328.     INPUTS
  2329.     VScrn - A pointer to an OpalScreen, which MUST be a virtual screen.
  2330.  
  2331.     RESULT
  2332.     OScrn - A pointer to the display screen used for the update, this
  2333.         will be an 8bit screen regardless of the resolution of
  2334.         VScrn.
  2335.         If an error occured, then OScrn will be < OL_ERR_MAXERR.
  2336.  
  2337.     CONSIDERATIONS
  2338.     There are alot of issues to be aware of if you wish to perform
  2339.     transitions, the combination of StartTransition24() and
  2340.     StopTransition24() will handle all of these for you, it is 
  2341.     strongly suggested that you use these functions.
  2342.  
  2343.     SEE ALSO
  2344.     StartTransition24()
  2345.     DisableZDStencil()
  2346.     SinglePlayField24()
  2347.  
  2348. opal.library/StopUpdate24
  2349.  
  2350.     NAME
  2351.     StopUpdate24 -- Stops updates to the frame buffer memory.
  2352.  
  2353.     SYNOPSIS
  2354.     void StopUpdate24 (void);
  2355.  
  2356.     FUNCTION
  2357.     This function stops updates to the OpalVision frame buffer memory initiated with a call to 
  2358.     UpdateDelay24(). This allows changes to be made to the Amiga memory without affecting the 
  2359.     OpalVision frame buffer memory thus offering inherent double buffering. Stopping updates will also 
  2360.     reduce the DMA load on the Amiga.
  2361.  
  2362.     INPUTS
  2363.     None
  2364.  
  2365.     RESULT
  2366.     None
  2367.  
  2368.     CONSIDERATIONS
  2369.     This function may take up to 1 frame as it must wait for the current frame update to be completed.
  2370.  
  2371.     SEE ALSO
  2372.     UpdateDelay24()
  2373.     Refresh24()
  2374.  
  2375. opal.library/UpdateAll24
  2376.  
  2377.     NAME
  2378.     UpdateAll24 -- Resets the internal update structure so all required banks are updated.
  2379.  
  2380.     SYNOPSIS
  2381.     void UpdateAll24 (void);
  2382.  
  2383.     FUNCTION
  2384.     Resets the internal update structure so that all required banks are updated.  This function is useful after a 
  2385.     call to UpdatePFStencil24() to reinitialise the internal state of the library so that all the required segments 
  2386.     are updated correctly on subsequent calls to Refresh24() or UpdateDelay24().
  2387.  
  2388.     INPUTS
  2389.     None
  2390.  
  2391.     RESULT
  2392.     None
  2393.  
  2394.     CONSIDERATIONS
  2395.  
  2396.  
  2397.     SEE ALSO
  2398.     UpdatePFStencil24()
  2399.  
  2400. opal.library/UpdateCoPro24
  2401.  
  2402.     NAME
  2403.     UpdateCoPro24() -- Writes CoPro list for the current display screen to Video coprocessor
  2404.  
  2405.     SYNOPSIS
  2406.     void UpdateCoPro24 (void); 
  2407.  
  2408.     FUNCTION
  2409.     Encodes the entire CoPro instruction list from the displayed screen structure and initiates a coprocessor 
  2410.     update.
  2411.  
  2412.     This function also updates the Load Address Register.
  2413.  
  2414.     INPUTS
  2415.     None
  2416.  
  2417.     RESULT
  2418.     None
  2419.  
  2420.     CONSIDERATIONS
  2421.     Modifying the coprocessor list in the screen structure does not have any effect on the display until 
  2422.     UpdateCoPro24 () is called. 
  2423.  
  2424.     The CoPro list will not be updated in the OpalVision until the next vertical blanking period.
  2425.  
  2426.     SEE ALSO
  2427.     SetCoPro24()
  2428.     RegWait24()
  2429.  
  2430. opal.library/UpdateDelay24
  2431.  
  2432.     NAME
  2433.     UpdateDelay24 () -- Sets the delay between consecutive frame buffer updates.
  2434.  
  2435.     SYNOPSIS
  2436.     void UpdateDelay24 (FrameDelay);
  2437.                 D0
  2438.  
  2439.     long FrameDelay;
  2440.  
  2441.     FUNCTION
  2442.     This function allows a variable frame delay between consecutive frame buffer updates. Setting a frame 
  2443.     delay of zero enables continuous full speed updates.
  2444.  
  2445.     This function also initiates continuous updates to the OpalVision frame buffer memory which will 
  2446.     continue until either Refresh24() or StopUpdate24() is called.
  2447.  
  2448.     Setting a delay increases free bus DMA bandwidth to increase performance of the CPU and other DMA 
  2449.     devices.
  2450.  
  2451.     INPUTS
  2452.     FrameDelay    = Number of Frames to pause between frame buffer updates.
  2453.  
  2454.     RESULT
  2455.     None
  2456.  
  2457.     CONSIDERATIONS
  2458.     UpdateAll24() and UpdatePFStencil24() determine which memory segments will be updated during an 
  2459.     update sequence.
  2460.  
  2461.     SEE ALSO
  2462.     StopUpdate24()
  2463.     UpdateAll24()
  2464.     UpdatePFStencil24()
  2465.     Refresh24()
  2466.  
  2467. opal.library/UpdatePalette24
  2468.  
  2469.     NAME
  2470.     UpdatePalette 24 -- Loads all 256 entries of Red, Green and Blue values in the OpalScreen structure onto 
  2471.             the OpalVision  palette registers.
  2472.  
  2473.     SYNOPSIS
  2474.     void UpdatePalette (void);
  2475.  
  2476.     FUNCTION
  2477.     Updates the OpalVision palette registers with the palette values in the OpalScreen structure.
  2478.  
  2479.     This also updates the Pixel Read mask and the Command Register and uses the Palette Load Address as 
  2480.     an offset for the palette update.
  2481.  
  2482.     INPUTS
  2483.     None
  2484.  
  2485.     RESULT
  2486.     None
  2487.  
  2488.     CONSIDERATIONS
  2489.     Updates will have no effect in non palette mapped modes.
  2490.  
  2491.     SEE ALSO
  2492.     SetRGB24 ()
  2493.     PaletteMap24 ()
  2494.  
  2495. opal.library/UpdatePFStencil24
  2496.  
  2497.     NAME
  2498.     UpdatePFStencil24() -- Updates playfield stencil at highest possible rate.
  2499.  
  2500.     SYNOPSIS
  2501.     void UpdatePFStencil24(void);
  2502.  
  2503.     FUNCTION
  2504.     Enables updates to only the segments containing the playfield stencil (green segments). The speed of 
  2505.     update is three times that of a normal 24bit update. This enables quick playfield transitions.
  2506.  
  2507.     This function does not update the playfield stencil as such, but modifies the internal state of the library so 
  2508.     that subsequent calls to Refresh24() or UpdateDelay24() will only update the segments containing the 
  2509.     playfield stencil. The internal state of the library can be returned to normal by calling UpdateAll24().
  2510.  
  2511.     To use the playfield stencil in 8bit mode, the green bank contains the stencil and therefore must be 
  2512.     updated. The most convenient way to do this is to write the frame for the first playfield in the red 
  2513.     segment of bank 0 using WriteFrame24(0) and the second playfield into the red segment of bank 1 using 
  2514.     WriteFrame24(3). UpdatePFStencil24() will call WriteFrame24(1) when in 8bit mode to switch to the 
  2515.     green segment. Placing you playfields in segments other than the green segment will give you the full 
  2516.     256 colours rather than 128.
  2517.  
  2518.     INPUTS
  2519.     None
  2520.  
  2521.     RESULT
  2522.     None
  2523.  
  2524.     CONSIDERATIONS
  2525.  
  2526.  
  2527.     SEE ALSO
  2528.     UpdateDelay24 ()
  2529.     DualPlayField24()
  2530.     SinglePlayField24()
  2531.     Refresh24()
  2532.     UpdateAll24()
  2533.  
  2534. opal.library/UpdateRegs24()
  2535.  
  2536.     NAME
  2537.     UpdateRegs24 () -- Updates the hardware registers for the current display screen
  2538.  
  2539.     SYNOPSIS
  2540.     void UpdateRegs24 (void)
  2541.  
  2542.     FUNCTION
  2543.     Updates the Pixel Read mask, Command register and Palette Load Address registers in the OpalVision 
  2544.     with the values from the current display screen structure (See "Registers").
  2545.  
  2546.     INPUTS
  2547.     None
  2548.  
  2549.     RESULT
  2550.     None
  2551.  
  2552.     CONSIDERATIONS
  2553.     Changing register values in the screen structure does not take effect until an update has been initiated. 
  2554.  
  2555.     Register updates are not completed until the next vertical blanking period.
  2556.  
  2557.     SEE ALSO
  2558.     RegWait24()
  2559.  
  2560. opal.library/WriteFrame24
  2561.  
  2562.     NAME
  2563.     WriteFrame24 -- Sets the current frame to be written to within the frame buffer memory.
  2564.  
  2565.     SYNOPSIS
  2566.     void WriteFrame24 (Frame);
  2567.                D0
  2568.  
  2569.     long Frame;
  2570.  
  2571.     FUNCTION
  2572.     Depending on the resolution of the displayed OpalVision screen, a number of screens can be stored in the 
  2573.     frame buffer memory. The number of frames available for the screens resolution are given in the 
  2574.     MaxFrames variable in the OpalScreen structure.
  2575.  
  2576.     WriteFrame24() allows each individual frame to be written separately where Frame is in the range 
  2577.     0...MaxFrames. Using a combination of WriteFrame24 and DisplayFrame24, it is possible to store 
  2578.     several images in frame buffer memory and to perform simple page flip animation.  
  2579.  
  2580.     INPUTS
  2581.     Frame    = Frame number to display (0...MaxFrames).
  2582.  
  2583.     RESULT
  2584.     None
  2585.  
  2586.     CONSIDERATIONS
  2587.     The display frame and the write frame, must reside in the same field area in the frame buffer memory. 
  2588.     (See "Memory Segment Diagram"). Due to this WriteFrame24() has the side effect of changing the 
  2589.     display frame if the new write frame is in a different field. 
  2590.  
  2591.     SEE ALSO
  2592.     DisplayFrame24()
  2593.  
  2594. opal.library/WritePFPixel24
  2595.  
  2596.     NAME
  2597.     WritePFPixel24 () -- Set or clear a pixel in the playfield stencil.
  2598.  
  2599.     SYNOPSIS
  2600.     Result = WritePFPixel24 (OScrn, x, y);
  2601.     D0             A0     D0 D1    
  2602.  
  2603.     struct OpalScreen *OScrn;
  2604.     long x;
  2605.     long y;
  2606.     long Result;
  2607.  
  2608.     FUNCTION
  2609.     Sets or clears a pixel in the playfield stencil depending on the state of Pen_R in the screen structure. If 
  2610.     Pen_R is = 0, the pixel will be cleared else it is set. The SetPFPen macro can be used to initialize Pen_R.  
  2611.  
  2612.     INPUTS
  2613.     OScrn    = A pointer to an OpalScreen structure.
  2614.     x    = x coordinate of pixel. 
  2615.     y    = y coordinate of pixel. 
  2616.  
  2617.     RESULT
  2618.     Result    = -1 if the pixel is outside the clip boundary else 0.
  2619.  
  2620.     CONSIDERATIONS
  2621.     This function only has visible effect in dual playfield mode.
  2622.  
  2623.     SEE ALSO
  2624.     ReadPFPixel24()
  2625.     UpdatePFStencil()
  2626.     DualPlayField24()
  2627.     SinglePlayfield24()
  2628.  
  2629. opal.library/WritePixel24
  2630.  
  2631.     NAME
  2632.     WritePixel24 () -- Write a pixel into an OpalScreen.
  2633.  
  2634.     SYNOPSIS
  2635.     Result = WritePixel24 (OScrn, x, y);
  2636.     D0                   A0     D0 D1        
  2637.  
  2638.  
  2639.     struct OpalScreen *OScrn;
  2640.     long x;
  2641.     long y;
  2642.     long Result;
  2643.  
  2644.     FUNCTION
  2645.     Writes a pixel in the specified OpalScreen using the current pen value in that structure. The macro 
  2646.     SetPen can be used to initialize pen values correctly.
  2647.  
  2648.     INPUTS
  2649.     OScrn    = A pointer to an OpalScreen structure.
  2650.     x    = x coordinate of pixel. 
  2651.     y    = y coordinate of pixel. 
  2652.  
  2653.     RESULT
  2654.     Result    = -1 if the pixel is outside the clip boundary else 0.
  2655.  
  2656.     CONSIDERATIONS
  2657.  
  2658.  
  2659.     SEE ALSO
  2660.     ReadPixel24()
  2661.  
  2662. opal.library/WritePRPixel24
  2663.  
  2664.     NAME
  2665.     WritePRPixel24 () -- Set or clear a pixel in the priority stencil.
  2666.  
  2667.     SYNOPSIS
  2668.     Result = WritePRPixel24 (OScrn, x, y);
  2669.     D0                 A0     D0 D1        
  2670.  
  2671.     struct OpalScreen *OScrn;
  2672.     long x;
  2673.     long y;
  2674.     long Result;
  2675.  
  2676.     FUNCTION
  2677.     Sets or clears a pixel in the priority stencil depending on the state of Pen_R in the screen structure. If 
  2678.     Pen_R is = 0, the pixel will be cleared else it is set. The macro SetPRPen can be used to initialize the 
  2679.     state of Pen_R. 
  2680.  
  2681.     INPUTS
  2682.     OScrn    = A pointer to an OpalScreen structure.
  2683.     x    = x coordinate of pixel. 
  2684.     y    = y coordinate of pixel. 
  2685.  
  2686.     RESULT
  2687.     Result    = -1 if the pixel is outside the clip boundary else 0.
  2688.  
  2689.     CONSIDERATIONS
  2690.     This function only has visible effect when the priority stencil is enabled.
  2691.  
  2692.     SEE ALSO
  2693.     ReadPRPixel24()
  2694.     EnablePRStencil24()
  2695.     DisablePRStencil24()
  2696.  
  2697. opal.library/WriteThumbnail24
  2698.  
  2699.     NAME
  2700.     WriteThumbnail24 -- Writes an IFF thumb-nail chunk into a file.
  2701.  
  2702.     SYNOPSIS
  2703.     ReturnCode = WriteThumbnail24 (OScrn, File);
  2704.     D0                A0    A1
  2705.  
  2706.     struct OpalScreen *OScrn;
  2707.     BPTR File;
  2708.     long ReturnCode;
  2709.  
  2710.  
  2711.     FUNCTION
  2712.     This function generates a 24 bit thumb-nail for the given OpalScreen and writes an IFF OVTN thumb-
  2713.     nail chunk into the given file.
  2714.  
  2715.     INPUTS
  2716.     OScrn    = OpalScreen to generate the thumb-nail for.
  2717.     File    = File Handle of the file to write thumb-nail to.
  2718.  
  2719.     RESULT
  2720.     ReturnCode = 0 if all ok, or an OpalVision Error code  if en error occurred.
  2721.  
  2722.     CONSIDERATIONS
  2723.  
  2724.  
  2725.     SEE ALSO
  2726.     SaveIFF24()
  2727.     LoadImage24()
  2728.  
  2729.  
  2730. opalreq.library/OpalRequester
  2731.  
  2732.     NAME
  2733.     OpalRequester -- The OpalVision file requester.
  2734.  
  2735.     SYNOPSIS
  2736.     ReturnCode = OpalRequester (OReq);
  2737.     D0                A0
  2738.  
  2739.     struct OpalReq *OReq;
  2740.  
  2741.     FUNCTION
  2742.     This is the entry point for the OpalVision requester. OReq is a pointer to a properly initialised OpalReq 
  2743.     structure defined in the above sections. The requester will be displayed and handled completely by the 
  2744.     library, when the user has selected a file or hit cancel, this function will return the selected file and 
  2745.     directory name in OReq. OKHit will be cleared if the user hit the Cancel gadget and set otherwise.
  2746.  
  2747.     INPUTS
  2748.     OReq    = A pointer to a correctly initialised OpalReq structure.
  2749.  
  2750.     RESULT
  2751.     ReturnCode = 0 if all ok
  2752.            =  OR_ERR_OUTOFMEM if there is not enough memory to display requester
  2753.            =  OR_ERR_INUSE if the requester is currently in use.
  2754.  
  2755.     CONSIDERATIONS
  2756.     For this release the intuition screen used to display the requester
  2757.     must be hires interlaced, and have atleast 2 bit planes.
  2758.  
  2759.     SEE ALSO
  2760.  
  2761.